2017-01-02 8 views
5

मेरे इतिहास पेड़ वर्तमान में इस तरह दिखता है: enter image description hereGit: स्थानांतरित करने से पहले विलय प्रतिबद्ध

मैं शाखा गुरु के b3 प्रतिबद्ध लागू करना चाहते हैं। बेशक मैं फिर से मर्ज कर सकते हैं master में feature शाखा लेकिन इतिहास करता है दो मर्ज के साथ गंदा दिखेगा (a6, और a4 कि अब सिर्फ बेकार है): enter image description here


इस प्रकार, मैं जानना चाहते हैं क्या, कैसे a4 बनाने के लिए के बजाय b3 पर इंगित करें? enter image description here मैं स्वीकार SHA1 रों अलग होगा, और इस तरह करता है a4' और a5'

+1

गुरु से, 'करते Git -p b3' rebase। इसे विलय को संरक्षित रखना चाहिए लेकिन इसे 'बी 3' के बाद ले जाना चाहिए। – poke

+0

@ पोक थाक्स! क्या मुझे ऐसा करने के लिए 'ए 4' राज्य पर होना चाहिए, या अगर मैं '5 'पर हूं तो यह काम कर रहा है? – ebo

+0

इसे किसी भी पर काम करना चाहिए। – poke

उत्तर

2

मास्टर शाखा से बदल दिया जाएगा, तो आप नये b3 पर rebase सकता है, जबकि --preserve-merges option (या -p में उपयोग करते हुए मर्ज के संरक्षण संक्षिप्त):

git rebase -p feature 

इस तरह, जब Git rebases, यह मर्ज समतल का प्रयास नहीं करेगा, लेकिन इसके बजाय नया आधार प्रतिबद्ध के शीर्ष पर इसे पुन:। तो अपने इतिहास इस तरह दिखेगा:

       master 
           ↓ 
a1 -- a2 -- a3 --------- a4' -- a5' 
     \    /
     \   /
      b1 -- b2 -- b3 
         ↑ 
        feature 

निम्नलिखित की तुलना में जब --preserve-merges ध्वज का उपयोग नहीं:

         master 
             ↓ 
a1 -- a2     a3' -- a4' -- a5' 
     \    /
     \   /
      b1 -- b2 -- b3 
         ↑ 
        feature 
+0

ओपी को (और, मैंने देखा, किया) ध्यान दें कि परिणाम एक नया (अलग) विलय है, विभिन्न हैश और विभिन्न पेड़ के साथ। जैसा कि आप कहते हैं, पुन: * पुन: * बनाता है * (यानी, एक * नया * बनाओ) कि पुरानी सप्लायरों को विलय करें। वैसे भी, ऊपर उठाया। :-) – torek

+1

@torek हाँ, मैं यह इंगित करने के लिए 'x'' धारणा का उपयोग करता हूं कि यह मूल' x' के आधार पर एक पुनर्निर्मित प्रतिबद्धता है :) – poke

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