नई शाखा में परिवर्तन कैसे करें


151

मैंने सिर्फ एक शाखा में परिवर्तन किया है। मैं दूसरी शाखा में परिवर्तन कैसे कर सकता हूं?

मैं उपयोग करने की कोशिश कर रहा हूं:

git checkout "the commmit to the changed branch" -b "the other branch"

हालाँकि, मुझे नहीं लगता कि यह करना सही है, क्योंकि इस मामले में मैं "दूसरी शाखा" में बदलाव करने के बजाय एक नई शाखा बना रहा हूँ।

क्या मुझे इसके बजाय निम्नलिखित कमांड का उपयोग करना चाहिए?

git merge "the other branch"

सिर्फ एक कमिट या कई?
कार्ल नॉरम

जवाबों:


268

git checkout -b your-new-branch

git add <files>

git commit -m <message>

सबसे पहले, अपनी नई शाखा की जाँच करें। फिर सभी फ़ाइलों को जोड़ें जिन्हें आप चरणबद्ध करना चाहते हैं। अंत में, आपके द्वारा जोड़ी गई सभी फाइलों को कमिट करें। आप git push origin your-new-branchबाद में करना चाह सकते हैं ताकि आपके परिवर्तन रिमोट पर दिखाई दें।


1
चूंकि मुझे git चेकआउट v3.0 (परिवर्तन करने से पहले की शाखा) नई-शाखा से नई-शाखा मिली, क्या मुझे अभी भी "git add <files>" का उपयोग करने की आवश्यकता है?
user1988385

आप देख सकते git statusहैं कि वर्तमान में क्या मंचन किया गया है और क्या नहीं है।
जॉन ब्रॉडी

5
दोनों git addऔर क्यों git commit -a?
कार्ल नॉरम

11
इसके git checkout -b your-new-branchबजाय यह नहीं है git checkout your-new-branch?
श्रोडिंगर की

1
कैसे के बारे में अगर मैं पहले से ही एक फाइल को ट्रैक करता हूं और मैं एक नई शाखा में स्विच करना चाहता हूं तो उन फ़ाइलों को नई बनाई गई शाखा में जोड़ें?
गधा-राजा कुछ सवाल

58

यदि आपने परिवर्तन नहीं किए हैं

यदि आपके परिवर्तन अन्य शाखा के अनुकूल हैं

यह प्रश्न से मामला है क्योंकि ओपी एक नई शाखा के लिए प्रतिबद्ध करना चाहता है और यह भी लागू होता है कि क्या आपके परिवर्तन एक ओवरराइट को ट्रिगर किए बिना लक्ष्य शाखा के साथ संगत हैं।

जॉन ब्रॉडी द्वारा स्वीकार किए गए उत्तर में, आप बस नई शाखा की जांच कर सकते हैं और काम कर सकते हैं:

git checkout -b branch_name
git add <files>
git commit -m "message"

यदि आपके परिवर्तन अन्य शाखा के साथ असंगत हैं

यदि आपको त्रुटि मिलती है:

error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches

तब आप अपने काम को रोक सकते हैं, एक नई शाखा बना सकते हैं, फिर अपने स्टैश में बदलाव कर सकते हैं, और संघर्षों को हल कर सकते हैं:

git stash
git checkout -b branch_name
git stash pop

यह ऐसा होगा जैसे आपने नई शाखा बनाने के बाद उन बदलावों को किया था। फिर आप हमेशा की तरह कमिट कर सकते हैं:

git add <files>
git commit -m "message"

अगर आपने बदलाव किए हैं

अगर आप मूल शाखा में कमिट्स रखना चाहते हैं

चेरी-पिकिंग के साथ कार्ल नॉरम का जवाब देखें, जो इस मामले में सही उपकरण है:

git checkout <target name>
git cherry-pick <original branch>

यदि आप मूल शाखा में आवागमन नहीं रखना चाहते हैं

इस संभावित डुप्लिकेट पर joeytwiddle द्वारा उत्तर देखें । उपरोक्त चरणों में से किसी एक का पालन करें, फिर मूल शाखा को वापस रोल करें:

git branch -f <original branch> <earlier commit id>

यदि आपने अपने परिवर्तन को GitHub जैसे साझा रिमोट पर धकेल दिया है, तो आपको इस रोल-बैक का प्रयास नहीं करना चाहिए जब तक कि आप यह नहीं जानते कि आप क्या कर रहे हैं।


3
हर एक जोर से इस कोड का प्रयास करें। क्योंकि अधिकांश लोग जो जवाब चाहते हैं, उनके पास आपके मौजूदा कोड में पहले से ही कुछ बदलाव हैं।
सुषिन पी.वी.

2
आपने स्टैश और स्टैश पॉप क्यों जोड़ा? जब आप एक नई शाखा की जांच करते हैं, तो आपके परिवर्तन जोड़ने और प्रतिबद्ध करने के लिए avaialable होंगे, स्टैश करने की आवश्यकता नहीं है।
ट्रिस्टन

@ ट्रिस्टन आप उस स्थिति में सही हैं जहाँ परिवर्तन संगत हैं और फाइलें अधिलेखित नहीं होती हैं। अन्यथा, मुझे मिलता है error: Your local changes to the following files would be overwritten by checkout: ... Please commit your changes or stash them before you switch branches.क्या आप एक नया उत्तर लिखना चाहते हैं या मेरे उत्तर को संपादित करना चाहते हैं? यदि नहीं, तो मैं इसे स्वयं संपादित कर सकता हूं।
मिगुएलमोरिन

ठीक है, आप पूरी तरह से सही हैं। मुझे लगता है कि आपको अपना जवाब पूरा करना चाहिए, हालांकि यह दिखाने के लिए कि यह स्वीकृत उत्तर के अलावा क्या लाता है।
ट्रिस्टन

@ ट्रिस्टन मैंने वह किया। ओपी एक नई शाखा के बारे में पूछ रहा था, जिस स्थिति में स्वीकृत उत्तर सही है। मैं अपना जवाब रखता हूं क्योंकि अन्य लोगों को मेरा उत्तर उपयोगी लगा। यह एक लंबा जवाब बन गया है और मुझे किसी भी प्रतिक्रिया के साथ संपादित करने में खुशी हो रही है।
मिगुएलमोरिन

24

अगर मैं सही समझूं, तो आपने कमिटमेंट कर दिया है changed_branchऔर आप उस कमेट को कॉपी करना चाहते हैं other_branch? आसान:

git checkout other_branch
git cherry-pick changed_branch

5
वह जो पूरा करने की कोशिश कर रहा है, उसके लिए यह सही जवाब है।
शॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.