मेरे सभी परिवर्तनों को वर्तमान शाखा पर ले जाएं और उन्हें Git में एक नई शाखा में स्थानांतरित करें


105

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

तो अभी मैं क्या करना चाहता हूँ:

  1. नामक एक नई शाखा बनाएँ (कहना) "बढ़त"
  2. सभी परिवर्तित / अनट्रैक की गई फ़ाइलों को किनारे पर ले जाएँ (जैसे कि जब मैंने बग फिक्स शुरू किया था, तब से मास्टर अपरिवर्तित है)
  3. मेरे काम को किनारे पर खत्म करें, मास्टर में वापस मर्ज करें

मैं यह कैसे कर सकता हूँ?

जवाबों:


103

यदि आप अभी तक कुछ भी नहीं कर रहे हैं, तो आप पहले से ही सही स्थिति में हैं।

  1. एक नई शाखा बनाएँ: git checkout -b edge
  2. आपकी फाइलें नहीं बदली हैं। बस git addहमेशा की तरह और क्या करने की जरूरत है।
  3. करना समाप्त करने पर प्रतिबद्ध हैं edge, के लिए वापस स्विच masterके साथ git checkoutऔर git merge edge

अभी तक कुछ भी नहीं किया था, इसलिए कि पहली पंक्ति का स्वागत योग्य दृश्य था ... काश, कि वास्तव में काफी दर्द रहित था :-)
Drenai 15

87

जेबी के जवाब में जोड़ने के लिए, यदि आपने पहले से ही "बढ़त" प्रयास के रूप में समाप्त होने के लिए मास्टर पर कुछ कमिट करना शुरू कर दिया है , तो आप कर सकते हैं:

git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply

स्टैश रैपर कड़ाई से आवश्यक नहीं है, लेकिन सिर्फ बिना काम के बदलाव के लिए सही है?
हैवगेस

4
@ हेवगुअस सही। "मेरे सभी परिवर्तन ले लो" से, मैंने वर्तमान में अभी तक जोड़े गए परिवर्तनों को भी शामिल नहीं किया। अतः तना।
वॉनस

क्या दूसरी और तीसरी पंक्ति "गिट चेकआउट-बी एज मास्टर" में ढह नहीं सकती है?
पॉल लिंच

(पर उन पर विचार करता @PaulLynch master) उस पर होना चाहिए edge रहे हैं पर master, हाँ। मैंने उत्तर संपादित किया है।
वॉनक

मैं यह नहीं देखता कि git stashयहाँ कैसे उपयोगी है, क्योंकि git checkout -bकाम करने वाले पेड़ को बिल्कुल भी संशोधित नहीं करता है ...
user1686

13

यदि आप कार्य को मास्टर से उस शाखा में स्थानांतरित करने का प्रयास कर रहे हैं जो पहले से मौजूद है, लेकिन मास्टर के पीछे है, तो git आपको दूसरी शाखा में जाने नहीं देगा। इस मामले में, यह करें:

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