2012-04-04 13 views
8

आज मुझे एक समस्या का सामना करना पड़ा। मेरे साथियों ने मास्टर से शाखा बनाई। उन्होंने इस शाखा में एक विशेषता विकसित की और उसके बाद उप-प्रजातियों की शाखाओं में दो उप-गुण विकसित किए। अंत में उन्होंने पूरी चीज की दो रिफैक्टरिंग प्रतिबद्धता की। तो ...मर्ज किए गए बच्चों के साथ गिट रिबेस शाखा

 C--D E--F    | subfeatures 
    / \/ \ 
    B------M1------M2--G--H | feature 
/
A-------------------K  | master 

आम तौर पर हम बिना किसी फास्ट-फॉरवर्ड को मास्टर में विलय करने से पहले फीचर शाखाओं को पुन: पेश करते हैं। लेकिन निश्चित रूप से यह rebase विफल रहता है। रिबेस सुविधा शाखा की तरह लग रही हो गया:

 B'--C'--D'--E'--F'--G'--H' 
    /
A--K 
सी & के पाठ्यक्रम संकेत के

डी तो मैं भी दो subfeature शाखाओं 'हवा' से बढ़ रहा है मिल गलत हो गया। मैं समझता हूं कि अगर इसे उपसर्ग शाखाओं को फीचर में विलय नहीं किया गया था, लेकिन इस समय मैं उलझन में था। मैंने पुनर्जीवित वसूली शाखा में सबकुछ उठाया और फिर से विलय कर लिया। क्या यह करने का एक आसान तरीका है?

उत्तर

11

ध्यान दें कि आपको ठीक से काम करने के लिए git rebase --preserve-merges के लिए git1.7.6 + की आवश्यकता है।

  • एक rebase --preserve-merges --onto से पहले ("git rebase --preserve-merges --onto doesn't preserve merges") काम नहीं किया
  • एक rebase --preserve-merges कुछ उदाहरण में समस्या हुई:
    • , this thread देखते हैं जब मर्ज के दोनों ओर पुनः बजाया जाता है)
    • " Git: Rebasing Merge Commits "(अलेक्जेंड्रू पासका से पोस्ट)

लंबी कहानी छोटी: आपने अभी एक विलय पूरा कर लिया है और किसी ने आपके आगे धक्का देने में सक्षम होने से पहले एक प्रतिबद्धता को धक्का दिया है। समाधान गिट को आपके द्वारा किए गए विलय के बारे में जागरूक करना है।

git rebase --preserve-merges <upstream> 

या

git rebase -p <upstream> 

लेकिन वहाँ एक समस्या है, अपने मर्ज संघर्ष है कि आप हल वे रिबेस मशीनरी द्वारा उठाया नहीं किया जाएगा था।
और तुम संघर्ष फिर से हल करने खत्म हो जाएगा ... कम से कम यह Git संस्करण के साथ मामला है 1.7.5.4

(यही कारण है कि git rerere के लिए कहेंगे)

2

क्या आपने हर प्रतिबद्धता को एक-एक करके हाथ से चिपकाया था?

बस git rebase -i master feature चलाएं और इतिहास को फिर से लिखें।

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