Git में ब्रांच नामों को स्विच करें


103

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

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

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

जवाबों:


144

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

git branch -m master crap_work
git branch -m previous_master master

अपने वर्कफ़्लो के आधार पर आप .it / config में किसी भी शाखा संदर्भ को बदलना चाह सकते हैं। मैं [branch "crap_work"]पढ़ने के लिए बदल गया [branch "master"]ताकि मास्टर के साथ अभी भी समन्वयित हो origin/master। बेशक, दो खण्डों की स्थिति ऐसी थी कि यह अभी भी समझ में आता है।
3

3
यह केवल स्थानीय रेपो पर, दूरस्थ रेपो पर शाखाओं का नाम नहीं बदलता है।
धुआंधार

1
@smohadjer रीमेक का नाम बदलने के लिए, आप git push -uf origin masterऔर करेंगे git push -u origin crap_work
ज़्ये

31

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

git चेकआउट-बी विषय / topic_name मास्टर

वहां से, मैं सार्वजनिक रिपॉजिटरी में बदलावों को आगे बढ़ा सकता हूं:

git push pu विषय / topic_name

या अंत में इसे केवल मेरी मास्टर शाखा में वापस मर्ज करें:

git चेकआउट मास्टर && git मर्ज विषय / विषय_नाम

यदि आपको वास्तव में किसी पुराने बिंदु पर वापस जाने की आवश्यकता है और यह निर्धारित करें कि आपके स्वामी के रूप में, आप वर्तमान शाखा का नाम बदलकर कुछ और कर सकते हैं और फिर अपने स्वामी होने के लिए पुराने संस्करण की जांच कर सकते हैं:

 गिट ब्रांच -एम मास्टर जंक
 git co -b master old_sha1_value

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

14

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

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

1
मुझे इस बात का कोई कारण नहीं है कि मुझे वोट दिया गया है। मैंने इसे स्वयं कुछ बार किया, इससे पहले कि मैंने शाखा-मी के बारे में जाना और महसूस किया कि मास्टर को शाखा के स्थायी नाम के रूप में नहीं जोड़ा गया था।
Skiphoppy

7

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

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 checkout -bएक शाखा बनाता है और इसे सक्रिय बनाता है।
बोरिसऑकुंस्की

0

यह आपके स्वामी को एक चरण में किसी भी बिंदु पर सेट करेगा:

git checkout -B master new_point
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.