2009-09-21 12 views
75

एक सर्वर पर एक गिट नियंत्रित फ़ोल्डर है जहां मुख्य शाखा की जांच की जाती है और फ़ाइलों का एक पूरा ढेर संशोधित किया गया है और प्रतिबद्ध नहीं है। क्या मेरे लिए अलग शाखा में बदलाव करने का कोई तरीका है, इसलिए मैं एक साफ संस्करण पर वापस जा सकता हूं?गिट वर्तमान चेक आउट मास्टर से शाखा बनाते हैं?

यानी मैं इन सभी व्यक्तियों को बदलने के लिए effecitvely को पूर्ववत करना चाहता हूं लेकिन उन्हें एक और मौके पर स्टोर करना चाहता हूं ताकि यदि वह व्यक्ति अपने परिवर्तन चाहता है तो वे उस शाखा में स्विच कर सकते हैं।

(हाँ मुझे पता है कि यह कैसे काम करने के लिए डिज़ाइन किया गया है लेकिन यह मेरी स्थिति है!) किसी भी विचार की बहुत सराहना की गई।

+1

के समान। और हे, गिट आपके मामले में बहुत अच्छी तरह से काम करता है, मैं नहीं कहूंगा कि यह ऐसे वर्कफ़्लो के लिए डिज़ाइन नहीं किया गया है। यह है! – knittl

+0

सिर्फ स्पष्टीकरण के लिए, मुझे उम्मीद है कि परिवर्तनों का कभी भी उपयोग नहीं किया जाएगा, लेकिन मुझे मामले में स्थायी रिकॉर्ड की आवश्यकता है। – corydoras

उत्तर

132

सभी मौजूदा प्रमुख में आधारित एक अलग शाखा में जाने से पहले इस तरह किया जाता है

git commit -a 

मास्टर शाखा में वापस जाएं:

git checkout master 

पहले से अनोखा मिश्रित परिवर्तन सभी नई शाखा शाखा में होंगे, और मास्टर अभी भी राज्य में होंगे, यह उन परिवर्तनों के बिना था।

+5

* स्पष्टीकरण: * कामकाजी भंडार और चरणबद्ध परिवर्तनों की सामग्री किसी भी शाखा से संबंधित नहीं है। सरलता से नई शाखा बनाना (अंतिम संशोधन) नई प्रतिबद्धता के लिए पर्याप्त है शाखा '' –

+0

धन्यवाद दोस्तों, मैंने सोचा कि एक नई शाखा में स्विच करने से परिवर्तनों को मिटा दिया जा सकता है। एसवीएन पृष्ठभूमि से आ रहा है, मुझे नहीं लगता था कि इस तरह स्विचिंग संभव था। अब इसे जांचना। – corydoras

+0

बिल्कुल सही, जैसा आपने किया कहो! गिट थोड़ा ठंडा है (: – corydoras

13

आप हमेशा अपने परिवर्तनों को छू सकते हैं।

git stash 
git checkout -b bravenewmaster 
git stash apply 

यह भी ध्यान रखें, कि यदि आप "गलत" शाखा के लिए प्रतिबद्ध है कि आप हमेशा वापस शाखा स्थानांतरित कर सकते हैं, क्योंकि शाखा के अलावा कुछ नहीं एक प्रतिबद्ध करने के लिए एक सूचक है। (, अन्यथा उन्हें git add कोई नए जोड़े गए फ़ाइलें संभालने)

git checkout -b newbranch 

सभी परिवर्तन हो:

+3

यदि आप तुरंत उसी बदलाव को फिर से लागू करने जा रहे हैं तो क्यों परेशान होना परेशान है? आप बस 'गिट चेकआउट -बी ब्रेवेन्यूमास्टर' भी कर सकते हैं। यह कम टाइपिंग है और सभी बदली गई फ़ाइलों को अनावश्यक रूप से स्पर्श नहीं करेगा। –

+1

ठीक है, मैंने कोशिश नहीं की है, लेकिन मुझे लगता है कि किसी भी कारण से 'गिट'' परिवर्तनों के दौरान 'गिट चेकआउट-बी' नहीं होने देता है। अन्यथा, सवाल क्यों? ;-) –

+0

दरअसल, मैं जो कह सकता हूं, "मैं चाहता हूं कि मैं इन सभी व्यक्तियों को पूर्ववत कर दूं लेकिन उन्हें एक और मौके पर स्टोर कर सकूं ताकि अगर वह व्यक्ति अपने परिवर्तन चाहता है तो वे उस शाखा में स्विच कर सकते हैं" टिप्पणी - अकेले छेड़छाड़ के साथ पर्याप्त होना चाहिए कोई शाखा नहीं और आवेदन करना। –

13

यह पद्धति उपयोगी है:

git checkout -B <new_branch> <start point> 

कहाँ:

  • <new_branch> अपने नई शाखा (जैसे my_branch)
  • <start point> है अपने शुरू कर शाखा (master अपने मामले में)
  • -B<start point> से शुरू होने वाली नई शाखा बनाता है, i f यह पहले से मौजूद है, फिर इसे रीसेट करें (यह -b के रूप में विफल नहीं होगा जब शाखा पहले से मौजूद है)
  • कभी-कभी -m शाखाओं को स्विच करते समय निर्दिष्ट करने के लिए उपयोगी हो सकता है, यह वर्तमान शाखा के बीच तीन-तरफा विलय करेगा, आपका काम वृक्ष सामग्री (स्क्रिप्टिंग के लिए उपयोगी)।

देखें: man git-checkout अधिक जानकारी के लिए।

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