2013-02-04 38 views
17

ए में दो शाखाओं के साथ भंडार है।गिट: विशिष्ट शाखाओं को दूसरी शाखा में ले जाएं

मास्टर शाखा करता है:

C1, C2, C3, सी 4, सी 5, सी 6, सी 7, ..., C15, ...

मचान शाखा करता है:

C1, C2 , सी 3, सी 4, सी 5, सी 6, सी 7

मैं सभी ले जाना चाहते हैं के बाद C7 शाखा

मंचन करने के लिए मास्टर शाखा से करता है और उसके बाद वापस लौटने मास Ter शाखा

git reset --hard c7-hash 

साथ कैसे ले जाने के लिए/एक से दूसरे शाखा से विशिष्ट प्रतिबद्ध नकल?

+3

इस मामले में आपको काम करने की आवश्यकता नहीं है क्योंकि शाखा को तेजी से अग्रेषित किया जा सकता है मास्टर करने के लिए। 'गिट चेकआउट स्टेजिंग ', ' गिट मर्ज मास्टर ', ' गिट चेकआउट मास्टर ', ' गिट रीसेट --हार्ड सी 7-हैश' – tewe

+0

संभव डुप्लिकेट [कुछ गिट में किसी अन्य शाखा में कैसे स्थानांतरित करें?] (http://stackoverflow.com/questions/2369426/how-to-move-certain-commits-to-another-branch-in-git) – Kevin

+0

संभावित डुप्लिकेट [मैं हालिया प्रतिबद्धताओं को एक नई शाखा में कैसे स्थानांतरित कर सकता हूं गिट के साथ?] (http://stackoverflow.com/questions/1628563/how-can-i-move-recent-commits-to-a-new-branch-with-git) –

उत्तर

35

मामले में आप का वर्णन किया है, जहां सभी मचान शाखा पर करता है मास्टर शाखा पर भी कर रहे हैं, यह बहुत आसान है:

git checkout staging 
git merge master 
git checkout master 
git reset --hard c7-hash 

मर्ज तेजी से आगे हो जाएगा।

सामान्य मामले में, आप वर्तमान शाखा में व्यक्तिगत प्रतिबद्धताओं को चुनने के लिए git cherry-pick c8 c9 c10 c11 c12 c13 c14 c15 का उपयोग कर सकते हैं। चेरी के लिए एक छोटा रास्ता मास्टर पर मौजूद सभी कामों को चुनता है लेकिन वर्तमान शाखा git cherry-pick ..master नहीं है, और git help cherry-pick

+0

ऐसा करने के बाद मान लें कि आप ' मास्टर शाखा में एक्स'। और फिर आप मास्टर को स्टेजिंग में मर्ज करते हैं। क्या स्टेजिंग में विलय करना सही ढंग से 'x' को स्टेजिंग में विलय करेगा जबकि _not_ c8 को वापस नहीं कर रहा है ... c15 स्टेजिंग में जो वास्तव में काम करता है वह मास्टर में रीसेट हो चुका है? सी 8 सुनिश्चित करना चाहते हैं ... सी 15 उस विलय के बाद स्टेजिंग में रहें। –

+0

@MarcusLeon, विलय उन चीजों को वापस नहीं करेगा। जो लोग काम करते हैं उन्हें मास्टर में वापस नहीं किया गया था, वे पूरी तरह से हटा दिए गए थे। एक रीसेट एक वापसी नहीं है। टेस्ट कमिट्स और परीक्षण परिदृश्य बनाना आसान है, इसे आज़माएं। –