Git rebase मर्ज संघर्ष जारी नहीं रह सकता


131

मैं 'मास्टर' शाखा को पकड़ने के लिए 'देव' को पुन: स्थापित करने की कोशिश कर रहा हूं।

$ git checkout dev 
$ git rebase master 
First, rewinding head to replay your work on top of it...
Applying: Corrected compilation problems that came from conversion from SVN.
Using index info to reconstruct a base tree...
M       src/com/....
<stdin>:125: trailing whitespace.
/**
<stdin>:126: trailing whitespace.
 *
<stdin>:127: trailing whitespace.
 */
<stdin>:128: trailing whitespace.
package com....
<stdin>:129: trailing whitespace.

warning: squelched 117 whitespace errors
warning: 122 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging src/com/....
CONFLICT (content): Merge conflict in src/com/...
Failed to merge in the changes.
Patch failed at 0001 Corrected compilation problems that came from conversion from SVN.

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

$ vi src/com/.....   { fixed the merge issue on one file } 
$ git add -A . 
$ git rebase --continue 
src/com/....: needs merge
You must edit all merge conflicts and then
mark them as resolved using git add
$ vi src/com....      { verified, no >>> or <<< left, no merge markers } 
$ git rebase --continue 
Applying: Corrected compilation problems that came from conversion from SVN.
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

कोई विचार?


नोट: ऐसे मामले हैं जहां git rebase --skipअभी भी ठीक से काम नहीं कर सका। Git 2.0.2 तक (जुलाई 2014)। देखें नीचे मेरा उत्तर
VonC

जवाबों:


223

वहाँ कुछ स्थितियों में जहाँ मैंने देखा rebaseहै अटक जाते हैं। एक यह है कि यदि परिवर्तन शून्य हो जाते हैं (एक प्रतिबद्ध परिवर्तन जो पहले से ही पूर्व में रिबास में किए गए थे) जिस स्थिति में आपको उपयोग करना पड़ सकता है git rebase --skip

यह बताना बहुत आसान है। यदि आप ऐसा करते हैं तो git statusइसमें कोई बदलाव नहीं होना चाहिए। यदि ऐसा है तो इसे छोड़ें। अगर ऐसा नहीं है तो कृपया इसकी एक प्रति पोस्ट करें git statusऔर मैं आगे मदद करने की कोशिश कर सकता हूं।


नहीं, यह नहीं था, कारण "नहीं" परिवर्तन थे। मैंने इसे छोड़ दिया और फाइल की तुलना इसके बाद की कि यह क्या होना चाहिए था।
AWM

इससे मुझे तब मदद मिली जब मेरे '' git pull --rebase ओरिजिनल मास्टर "को संघर्षों को सुलझाने और छोड़ देने की ज़रूरत के बीच एक पाश में फंसते हुए दिखाई दिया। थोड़ा और धैर्य रखने के बाद, मैं तय कर रहा हूँ, ty!
AnneTheAgile

3
git स्टेटस रिटर्न: "प्रगति में रिबास; <कमिटमेंट पर> आप वर्तमान में '<प्रतिबद्धता"> पर शाखा' <ब्रांचनाम> 'को रिबास कर रहे हैं। (तय किए गए सभी विरोध: रन "गैट रिबास - कॉन्टिन्यू))"। git rebase --continue git rebase --skip करते समय कोई परिवर्तन नहीं करता है, लेकिन मेरे मामले में मुझे वह स्थिति बार-बार मिल रही है। क्या यह सही है या कुछ गड़बड़ है?
adi

धन्यवाद। मुझे चिंता थी कि --skipमेरे द्वारा किए गए परिवर्तनों के साथ आगे बढ़ने से भी बदतर होगा।
jchook

मेरे मामले में इंटेलीज आइडिया जीयूआई और सोर्सट्री दोनों दिखा रहे थे कि प्रत्येक फाइल को कमेट में जोड़ा गया है, जबकि git statusदिखाया गया है कि एक फाइल थी जिसे संशोधित किया गया था, लेकिन इसे कमिट में नहीं जोड़ा गया था। प्रदर्शन add somefile.txtको फिर से जारी रखने की अनुमति दी।
अज़ीज़बेकियन

16

एक बार जब मैंने इस मुद्दे को चलाया है, जब एक के git commitबाद एक कर रहा हूँ git add। तो, निम्न अनुक्रम आपके द्वारा उल्लिखित रिबास त्रुटि का उत्पादन करेगा:

git add <file with conflict>
git commit -m "<some message>"
git rebase --continue

हालांकि, नीचे दिया गया क्रम बिना किसी त्रुटि के चलता है, और रिबास जारी रखता है:
git add <file with conflict>
git rebase --continue

यह संभव हो सकता है कि git add -A"ऑल" विकल्प के साथ एक समान स्थिति पैदा कर रहा है। (कृपया ध्यान दें, मैं गिट में बहुत अनुभवहीन हूं, इसलिए यह उत्तर सही नहीं हो सकता है।) सुरक्षित होने के लिए, git rebase --skipइस स्थिति में भी अच्छा काम करना प्रतीत होता है।


6

नोट: Git 2.0.2 (जुलाई 2014) ने एक मामला तय किया है, जहां git rebase --skipअटक जाएगा और वर्तमान छूट के साथ नहीं जा पाएगा। ब्रायन एम द्वारा प्रतिबद्ध 95104c7
देखें कार्लसन ( )bk2204

rebase--merge: --skipएक पंक्ति में दो संघर्षों के साथ ठीक करें

यदि git rebase --mergeएक संघर्ष का सामना करना पड़ा, --skipतो काम नहीं करेगा यदि अगला प्रतिबद्ध भी संघर्ष करता है । फ़ाइल कभी नहीं एक अपरिहार्य लूप में परिवर्तित हो, नए पैच संख्या के साथ अद्यतन किया जाएगा ताकि कोई पैच वास्तव में छोड़ दिया जाएगा।
msgnum

msgnumकॉल_मर्ज में पहली चीज़ के रूप में फ़ाइल का मान अपडेट करें ।
यह भी एक " Already applied" संदेश से बचता है जब एक प्रतिबद्ध लंघन।
अन्य संदर्भों के लिए कोई दृश्य परिवर्तन नहीं होता है जिसमें call_merge लगाया जाता है, क्योंकि msgnum फ़ाइल का मान उन स्थितियों में अपरिवर्तित रहता है।


3
$ vi src/com....      { verified, no >>> or <<< left, no merge markers } 
$ git rebase --continue 

लगता है कि आप git addअपने परिवर्तनों को भूल गए ...


यह केवल एक "सत्यापित" था कि 2 वें समय में कोई बदलाव की आवश्यकता नहीं थी ... इसके ठीक ऊपर गिट ऐड था।
AWM

ठीक है, आपने उपयोग किया git addऔर फिर मर्ज जारी रखा, और यह बंद हो गया क्योंकि एक और फ़ाइल में संघर्ष है, इसलिए आपको उस एक को ठीक करने की आवश्यकता है, साथ ही साथ। क्या मुझसे कोई चूक हो रही है?
जॉन ब्रॉडी

1
यह वही फ़ाइल है जो रिपोर्ट कर रही है कि विलय की आवश्यकता है। ठीक है तुम्हारे लिए मैं एक और "git ऐड" करूँगा, लेकिन यह एक ही परिणाम है।
AWM

धन्यवाद! यह मेरी स्थिति थी: मैंने संघर्षों को हल किया लेकिन परिवर्तनों का मंचन नहीं किया।
किर्ल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.