2017-02-26 13 views
6

मैं शाखा पर feature-x पर कुछ काम कर रहा हूं, जब मुझे अचानक एक समस्या का सामना करना पड़ता है जिसे वास्तव में किसी अन्य शाखा, hotfix पर हल किया जाना चाहिए।किसी अन्य शाखा को एक ही फ़ाइल को

मैं उस परिवर्तन के साथ प्रतिबद्धता बनाना चाहता हूं, लेकिन hotfix शाखा पर।

this question से मैं समझता हूँ कि मानक प्रक्रिया

# On branch feature-x 
git stash 
git checkout hotfix 
git stash pop 
git add -A 
git commit -m "Fixed issue #562" 

होगा कि अगर मैं शाखा feature-x पहले से ही चल रहा पर कई बदलाव, जो शाखा hotfix के साथ कोई विरोध फेंक नहीं था काम करेगा। मैं अनावश्यक संघर्षों को हल करने से बचना चाहता हूं।

इससे बचने के लिए, मैं सोच रहा था कि मैं केवल this answer पर नोट किया गया था, मैं केवल एक ही फाइल निकाल सकता हूं। तो प्रक्रिया होगी:

# On branch feature-x 
git stash 
git checkout hotfix 
git checkout [email protected]{0} -- <src/buggyfile.xxx> 
git add -A 
git commit -m "Fixed issue #562" 

और फिर मैं feature-x

git checkout feature-x 
git stash pop 

के लिए वापस जाओ जबकि there's a wayको सीधे किसी अन्य शाखा से फ़ाइलें लाना चाहिए, मैं वहाँ करने का कोई तरीका है जानना चाहता हूँ इस परेशानी के बिना, फ़ाइलों को दूसरी शाखा में भेजें। वास्तविक संशोधन केवल कुछ वर्ण हैं।

+1

से यदि आप मतलब है "बाहर की जाँच के बिना' hotfix' और बाद में 'सुविधा x' फिर" "यह सब परेशानी के बिना", तो इस सवाल का [एक अलग करने के लिए फ़ाइल कमिट डुप्लिकेट है चेकआउट के बिना शाखा] (http://stackoverflow.com/questions/7933044/commit-a-file-to-a- अलग-branch-without-checkout)। (आपको कुछ दिलचस्प उत्तर मिलेंगे, वहां भी। क्या कोई संतोषजनक है, मुझे पता है।) –

+0

संभावित डुप्लिकेट [चेकआउट के बिना एक अलग शाखा में फ़ाइल को कम करें] (http://stackoverflow.com/questions/7933044/ प्रतिबद्ध-ए-फाइल-टू-ए-अलग-शाखा-बिना-चेकआउट) –

+0

अस्पष्ट भाषा के लिए मैं क्षमा चाहता हूं। मैं कम कमांड का संदर्भ दे रहा था (उपनाम को शामिल किए बिना)। – Veehmot

उत्तर

4

आप feature-x में परिवर्तन और cherry-pick यह hotfix में प्रतिबद्ध कर सकते हैं, इस प्रकार है:

# On branch feature-x 
git add <file> 
git commit -m "Fixed issue #562" // Note commit-id 
git checkout hotfix 
git cherry-pick <commit-id> 
git push origin hotfix 

@torek टिप्पणी के अनुसार जवाब विस्तार, git-worktree उपयोग करने के लिए, इस प्रकार है:

git worktree add -b hotfix ../hotfix origin/master 
cd ../hotfix/ 
git add <file> 
git commit -m "Fixed issue #562" 
git push origin hotfix 
+0

मैंने पहले कभी चेरी-पिक का उपयोग नहीं किया था। क्या वह * कॉपी * या * चाल * प्रतिबद्ध होगा? क्या प्रतिबद्धता एक ही समय में 'फीचर-एक्स' और' हॉटफिक्स 'पर होगी? – Veehmot

+1

यह प्रतिबद्धता की प्रतिलिपि बनाता है और हां एक ही समय में दोनों शाखाओं में प्रतिबद्धता मौजूद होगी। – Arpit

+1

फिर आप उस शाखा को चेक करने के बाद 'फीचर-एक्स' को 'गीट रीसेट HEAD ^' के साथ रीसेट कर सकते हैं। – merlin2011

2

feature-x से hotfix पर फ़ाइल करने के लिए, ऐसा करने का एक आसान तरीका है (मान लीजिए कि आपने अभी feature-x शाखा पर जो प्रतिबद्ध जोड़ा है 4712df727f7303bc95545d0f6a024129be97c5c2):

# on branch hotfix 
git checkout 4712d filename 
git commit 
संबंधित मुद्दे