2010-02-16 12 views
9

मैं इस (Git रेपो) है:(गिट): अपस्ट्रीम शाखा से विशिष्ट प्रतिबद्धता कैसे लाएं?

A--B--C--D ->master 
    \--E ->dev 

और मैं लाने के लिए केवल D प्रतिबद्ध शाखा dev (DC पर निर्भर नहीं करता) चाहते हैं, तो यह है कि:

A--B--C--D ->master 
    \--E--D' ->dev 

लेकिन डी 'मर्ज के बाद मास्टर में नहीं जोड़ा जाना चाहिए:

A--B--C--D--E' ->master 
    \--E--D'/ ->dev 

ऐसा इसलिए है क्योंकि मैं इसे लाना चाहता हूं dev को C (जो कि किसी अन्य, बड़े विलय का प्रतिनिधित्व करता है) जोड़ता है, के साथ dev को प्रदूषित किए बिना फ़ाइल अपडेट करें।
मुझे अनुमान है कि मुझे git rebase का उपयोग करने की आवश्यकता है, लेकिन मैं अनुमान नहीं लगा सकता कि कैसे।

उत्तर

10

आप git cherry-pick उपयोग करना चाहते हैं काम करने के साथ अद्यतन। मुझे लगता है कि आपके रिमोट को "मूल" नाम दिया गया है (लेकिन "मूल" के लिए रिमोट रेपो का वास्तविक नाम प्रतिस्थापित करें)। मुझे लगता है कि आपके पास दो स्थानीय शाखाएं हैं जिन्हें master और dev नाम दिया गया है। मुझे लगता है कि प्रतिबद्ध डी origin/dev पर है।

$ git fetch origin    # Assuming the upstream remote's name is "origin" 
$ git checkout dev    # Check out your local "dev" branch 
$ git cherry-pick $COMMIT_D # Replace "COMMIT_D" with the hash for commit D 

अब आप केवल dev में विकास के लिए प्रतिबद्ध से परिवर्तन होगा: आप निम्नलिखित के साथ चेरी ले डी कर सकते हैं।

संबंधित मुद्दे