2015-06-10 8 views
6

के अंदर गिट शाखाओं को स्विच करना मेरे पास repo का उपयोग करके शाखाओं को स्विच करने के बारे में एक प्रश्न है। मुझे पता है कि मैं इस तरह एक शाखा चेकआउट कर सकते हैं:एंड्रॉइड रेपो प्रोजेक्ट

$ repo init ... -b foo 
$ repo sync 

मेरे समझ है कि इस प्रकट भंडार की foo शाखा चेकआउट, और फिर प्रकट में वर्णित के रूप Git परियोजनाओं की जाँच है।

मैं यह भी समझता है कि मैं इस तरह शाखाओं स्विच कर सकते हैं:

$ repo init ... -b bar 
$ repo sync -d 

मेरा प्रश्न है, मैं रेपो init कर & रेपो सिंक हर बार बिना शाखाओं स्विच कर सकते हैं, और ऐसा करने के निहितार्थ क्या हैं?

मुझे एक उदाहरण के साथ वर्णन करते हैं:

$ repo init ... -b foo 
$ repo sync -d 
$ repo start foo-mytopic proj1 proj2 
... make some commits ... 
$ repo upload -t 
$ repo init ... -b bar 
$ repo sync -d 
$ repo start bar-topic proj1 proj3 
$ repo upload -t 
$ cd proj1 
$ git checkout foo-mytopiC# IS THIS ALLOWED? 

मैंने पहले इस की कोशिश की है, और यह काम करने लगता है, लेकिन यह थोड़ा अजीब है क्योंकि मैं अब कोड है कि foo में था बाहर की जाँच कर ली है प्रकट, लेकिन मेरी वर्तमान मेनिफेस्ट शाखा बार है। मैनिफेस्ट में वर्णित की तुलना में एक अलग शाखा पर होने का क्या प्रभाव है?

नोट: मैंने this पढ़ा है, और मुझे लगता है कि मेरा प्रश्न अलग है। मुझे पता है कि शाखाओं को कैसे स्विच करें। मुझे वर्तमान मेनिफेस्ट में वर्णित एक की तुलना में एक अलग शाखा पर होने के प्रभावों में दिलचस्पी है और यह मेरे वर्कफ़्लो को कैसे प्रभावित कर सकता है।

+0

मुझे लगता है कि मेरा प्रश्न अंततः इस पर उबालता है: रिपो मैनिफेस्ट फ़ाइल में उस गिट रिपॉजिटरी के लिए निर्दिष्ट शाखा की तुलना में एक विशिष्ट गिट भंडार में एक अलग (अपस्ट्रीम) शाखा पर होने का क्या प्रभाव है? – mkasberg

उत्तर

2

चूंकि कोई और इसका जवाब देने में सक्षम नहीं था, इसलिए मैंने कुछ और शोध और प्रयोग किया। यहां मैंने जो पाया है:

टीएल; डी - कुछ आदेश अजीब चीजें करेंगे। repo sync और repo start का उपयोग करते समय सावधान रहें। सादा गिट कमांड से चिपकने का प्रयास करें। repo upload काम करना चाहिए।

repo documentation का कहना है कि रेपो सिंक

$ git fetch origin 
$ git rebase origin/<BRANCH> 

के बराबर है जहां शाखा स्थानीय परियोजना निर्देशिका में वर्तमान में जांचा-आउट शाखा है। हालांकि, मेरे अपने अनुभव के आधार पर, रेपो वर्तमान शाखा में क्या है, इस आधार पर उस शाखा के लिए अपस्ट्रीम ट्रैकिंग जानकारी के साथ गड़बड़ कर देगा।

ऊपर से उदाहरण जारी रखने के लिए, git checkout foo-mytopic वास्तव में, अनुमत है, और उचित तरीके से व्यवहार करेगा। रिपो अपलोड शाखा में परिवर्तन को धक्का देगा जो foo-mytopic ट्रैकिंग (foo) है, लेकिन रेपो सिंक अपस्ट्रीम ट्रैकिंग जानकारी को बदल देगा। इस स्थिति में, git fetch origin और git rebase origin/<BRANCH> मैन्युअल रूप से चलाने के लिए बेहतर हो सकता है।

रेपो इनिट द्वारा वर्णित मैनिफेस्ट (और शाखा) repo sync या repo start चलाए जाने तक फिर से खेल नहीं पाएगा।

संबंधित मुद्दे