2013-01-24 9 views
18

मान लें कि master में मेरे पास एक सुविधा अक्षम है। मैं उस सुविधा पर शाखा feature पर काम करता हूं, इसलिए मेरे पास एक विशेष प्रतिबद्धता $ है जो बस उस सुविधा को सक्षम बनाता है। अब मैं feature में master में किए गए परिवर्तनों को मर्ज करना चाहता हूं, लेकिन सक्षम प्रतिबद्धता को बनाए रखें।गिट: "शीर्ष पर" एक प्रतिबद्धता को स्थानांतरित करें

new feature: A--B--C--D--$ 

मुझे लगता है कि करने के बारे में कैसे जाना होगा: तो यह तो चलो कहते हैं कि मैं सुविधा के शीर्ष पर प्रतिबद्ध है, यह क्या करना चाहते हैं $ ले जाकर जाने

main: A--B--X--Y 
feature: A--B--$--C--D 

की तरह है?

उत्तर

20

git rebase -i B, और फिर अपने संपादक में दिखाई देने वाली सूची के अंत में $ स्थानांतरित करें। यह खुलने वाली फ़ाइल में पहली पंक्ति के रूप में शुरू होगा। आप पूरी तरह से उस लाइन को भी हटा सकते हैं, जो सिर्फ आपकी शाखा के इतिहास से बाहर निकल जाएगा।

+0

कूल धन्यवाद! अब यह इतना स्पष्ट है कि मुझे रीबेस का उपयोग करना चाहिए, मैंने इसे किसी कारण से पहले चेरी-पिक्स के साथ हल करने की कोशिश की। –

+0

@AdrianPanasiuk, आप चेरी-पिक भी इस्तेमाल कर सकते हैं, लेकिन शायद यह बहुत अधिक प्रयास होगा। –

5

यदि आप feature पर उसी आदेश में आपको रखना चाहते हैं तो आपको एक नई शाखा बनाना चाहिए और निम्नलिखित कार्य करना चाहिए। अन्यथा बस पर feature

git rebase -i <sha for commit B> 

ले जाएँ ऐसा करने सूची

git checkout master 
git rebase feature <or the other branch name> 

की तह तक $ प्रतिबद्ध यह प्रश्न पर मेरे लिए स्पष्ट नहीं था, लेकिन आप $ बिल्कुल नहीं चाहते थे कि अगर, इसे git rebase -i के बाद इसे हटाने के बजाय इसे एक नई शाखा पर करना चाहते हैं ताकि आप इसे खोना न पड़े। जैसा कि आप इतिहास बदल रहे हैं।

यह भी मानता है कि शाखा feature को दूरस्थ रूप से धक्का नहीं दिया गया है क्योंकि पुनर्लेखन इतिहास खराब है।

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