प्रतिबद्ध एक विषय शाखा पर काम खत्म करने के बाद, मैं विषय शाखा मास्टर में निम्नलिखित की तरह विलय कर दिया:Git: रिबेसिंग एक विरोध हुआ मर्ज
o---*---o---o topic
/ \
o---o---o---*---o---o---+ master
The '*' के साथ चिह्नित करता है एक ही कोड को संशोधित किया है, इसलिए नेतृत्व विलय विलय प्रतिबद्धता में हल किए गए संघर्षों को मर्ज करने के लिए ('+' के साथ चिह्नित)।
जब मैं विलय कर दिया और संघर्ष का समाधान हो, मेरे सहकर्मी नई प्रतिबद्ध धक्का दिया गुरु ('एन' के रूप में चिह्नित), निम्नलिखित इतिहास में जिसके परिणामस्वरूप:
o---*---o---o topic
/ \
o---o---o---*---o---o---+ master
\
n---n origin/master
अब, निश्चित रूप से अपने स्थानीय गुरु शाखा की ओर जाता है धकेलने एक त्रुटि, के रूप में यह कोई तेजी से आगे धक्का है, तो मैं दो विकल्प हैं:
फेंक दूर अपने काम, मूल/मास्टर के लिए मास्टर रीसेट और मर्ज फिर से करना। मैं इससे बचना चाहता हूं क्योंकि मुझे फिर से संघर्षों को हल करना होगा।
मूल/मास्टर और पुश पर मास्टर रीबेज करें। यहां मेरी समस्या आती है: यह रीबेस करना (
-p
स्विच का उपयोग करते समय भी) आसानी से काम नहीं करता है, विलय प्रतिबद्धता फिर से एक ही संघर्ष दिखाती है, भले ही नई प्रतिबद्धता ('एन') ने विषय शाखा द्वारा छूए कुछ भी नहीं बदला । इसलिए मैं रिबेस के दौरान फिर से विवादों को सुलझाने के होगा और हल करने के लिए बिना विकल्प 1.
साथ के रूप में एक ही परिणाम होता है मैं प्राप्त करने के लिए मर्ज के लिए प्रतिबद्ध '+' रिबेसिंग है चाहेंगे फिर से विरोध करता है:
o---*---o---o-------- topic
/ \
o---o---o---*---o---o---n---n---+ master & origin/master
संपादित करें:
rerere स्विच सक्षम है, लेकिन किसी भी तरह से मदद करने के लिए नहीं मालूम था; क्या मुझे अपनी समस्या को ठीक करने के लिए config.rerere को सही करने के लिए कुछ और करना है?
संपादित करें 2:
विलय मूल/मास्टर भी (के रूप में टिप्पणियाँ और एक जवाब में प्रस्तावित) काम करेगा लेकिन बदसूरत इतिहास का एक प्रकार है जो मैं करने के लिए नेतृत्व करेंगे करने के लिए मर्ज-लिखें ('+') डी केवल एक विलय प्रतिबद्ध होने से बचने के लिए पसंद है।
आप इसे नए मास्टर के विलय से पहले मूल/मास्टर को भी पीछे छोड़ सकते हैं। – ScayTrase
@ScayTrase यह संभव होगा, लेकिन एक तरह का बदसूरत इतिहास का कारण बन जाएगा; मैं केवल एक विलय प्रतिबद्धता के साथ स्वच्छ समाधान पसंद करूंगा केवल – rhabarbersaft
दुर्भाग्यवश, इसमें से कोई वास्तविक तरीका नहीं है: इससे कोई फर्क नहीं पड़ता कि आप अपने दो विकल्पों में से कौन से विकल्प चुनते हैं, आपको सबसे अधिक बार फिर से संघर्षों को हल करना होगा। यदि आप उम्मीद करते हैं कि आप भविष्य में एक ही स्थिति में खुद को पा लेंगे, तो आपको शायद ['rerere'] सक्रिय करने पर विचार करना चाहिए (http://stackoverflow.com/questions/25670519/git-rebase-preserve-merges-fails/ 25671230 # 25671230)। – Jubobs