2008-08-22 24 views
98

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

कुछ तरीकों से यह पूछा जा सकता है/हल किया जा सकता है: मैं अपनी मास्टर शाखा का नाम किसी और चीज़ में कैसे बदल सकता हूं और फिर मास्टर के लिए कुछ और नाम बदल सकता हूं? मैं मास्टर का बैक अप कैसे ले सकता हूं और फिर उन सभी कामों का कारण बनता हूं जिन्हें मैंने पिछली बार एक अलग शाखा पर बैक अप लिया है?

सभी (त्वरित) उत्तरों के लिए धन्यवाद! वे सब अच्छे हैं।

उत्तर

140

अन्य टिप्पणियों के अलावा, आप -एम (चाल) गिट-शाखा सहायक में स्विच कर सकते हैं। आप कुछ और करने के लिए अपने पुराने मास्टर का नाम बदलने सकता है, तो मास्टर करने के लिए अपने नई शाखा का नाम बदलने:

git branch -m master crap_work 
git branch -m previous_master master 
+1

यह आपकी वर्तमान शाखा का नाम बदलने पर भी काम करता है! :) – Tarrasch

+0

आपके वर्कफ़्लो के आधार पर आप .git/config में किसी भी शाखा संदर्भ को बदलना भी चाह सकते हैं। मैंने '[शाखा" मास्टर "] को पढ़ने के लिए' [शाखा "crap_work"] 'बदल दिया' ताकि मास्टर अभी भी 'मूल/मास्टर' के साथ समन्वयित हो सके। बेशक, दो रिपो की स्थिति ऐसी थी कि यह अभी भी समझ में आया। – Eponymous

+1

यह रिमोट रेपो पर केवल स्थानीय रिपो पर शाखाओं का नाम नहीं बदलता है। – smohadjer

8

यह अपेक्षाकृत आसान है:

git checkout -b fake_master master # fake_master now points to the same commit as master 
git branch -D master    # get rid of incorrect master 
git checkout -b master real_master # master now points to your actual master 
git checkout master    # optional -- switch on to your master branch 
+1

यीप, पिछले पूरी तरह से वैकल्पिक है - 'Git चेकआउट -b' एक बनाता है शाखा ** और ** इसे सक्रिय बनाता है। – incarnate

15

master पर प्रारंभ,, एक शाखा in-progress बनाएं जिसका नाम तो पहले के एक प्रतिबद्ध करने के लिए master रीसेट।

$ git branch in-progress 
$ git reset --hard HEAD^ 
+1

मुझे इस पर मतदान करने का कोई कारण नहीं दिख रहा है। मैंने शाखा-एम के बारे में सीखा जाने से पहले, मैंने खुद को कुछ बार किया और महसूस किया कि मास्टर को शाखा के स्थायी नाम के रूप में अपरिवर्तनीय रूप से बंधे नहीं थे। – skiphoppy

32

मुझे लगता है कि आप एक अलग विकास की रणनीति इस तरह की समस्या को रोकने के लिए विचार करना चाहिए। ऐसा लगता है कि मेरे लिए सबसे अच्छा काम करना मेरे मास्टर शाखा पर सीधे विकास करना नहीं है। परिवर्तन मैं बना रहा हूं की परवाह किए बिना, मैं हमेशा नए कोड के लिए एक नई शाखा बनाएँ:

 
git checkout -b topic/topic_name master 

वहाँ से, मैं सार्वजनिक खजाने में परिवर्तन बाहर धक्का कर सकते हैं:

 
git push pu topic/topic_name 

या अंत में सिर्फ विलय यह मेरे मालिक शाखा के साथ में वापस:

 
git checkout master && git merge topic/topic_name 

आप वास्तव में कुछ ही समय में एक बड़ी बात करने के लिए वापस जाएँ और सेट अपने गुरु के रूप में, आप कुछ और करने के लिए वर्तमान शाखा का नाम बदल सकते कि और फिर करने की जरूरत है की जाँच

 
git branch -m master junk 
git co -b master old_sha1_value 
+0

यह एक अच्छी नीति है। और इसके बारे में सोचने के लिए आओ, मैंने देखा है कि कहीं और अभ्यास किया है। धन्यवाद। – Rimian

0

यह एक कदम में किसी भी बिंदु करने के लिए अपने गुरु सेट हो जाएगा: एक पुराने संस्करण अपने ज्ञान होना आवश्यक

git checkout -B master new_point