Gitリベースのマージ競合は続行できません


131

私は「マスター」ブランチに追いつくために「dev」をリベースしようとしています。

$ 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年7月)まで。以下の私の回答を
VonC、2014

回答:


223

rebase行き詰まってしまう状況がいくつかあります。1つは、変更がnullになった場合(コミットにはリベースで以前に行われた変更が含まれている場合)、その場合はを使用する必要がある場合がありますgit rebase --skip

簡単にわかります。git status変更しても何も表示されません。その場合はスキップしてください。そうでない場合は、のコピーを投稿してくださいgit status。さらにお手伝いできるよう努めます。


いいえ、それはありませんでした。私はそれをスキップし、後でファイルを比較しましたが、本来あるべき状態でした。
awm 2013年

これは、「git pull --rebase origin master」が競合の解決とスキップの必要性の間のループで動けなくなったように見えたときに役立ちました。もう少し我慢した後、tyを修正しました!
AnneTheAgile

3
git status returns: "rebase in progress; into <commitnumber> To you rebaseing branch '<branchname>' on '<commitnumber>'。(すべての競合が修正されました:run" git rebase --continue ")"。git rebase --continueは変更を返しませんが、git rebase --skip doは戻りますが、私の場合、その状況は何度も発生しています。それは正しいですか、それとも何か問題がありますか?
adi 2017

ありがとう。私が--skip行った変更をそのまま続行するよりも悪い結果になるのではないかと心配していました。
jchook 2017年

私の場合、Intellij Idea GUIとSourceTreeの両方が、各ファイルがコミットに追加されたことをgit status示していましたが、変更されたがコミットには追加されなかったファイルがあることを示していました。実行add somefile.txtすると、リベースを続行できます。
アジズベキアン

16

私がこの問題に遭遇したときの1つは、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に非常に慣れていないので、この答えは正しくない可能性があることに注意してください。)安全のためにgit rebase --skip、この状況でもはうまく機能するようです。


6

注:Git 2.0.2(2014年7月)では、a git rebase --skipがスタックし、現在のリベースを続行できないケースが修正されました。brian mによるcommit 95104c7を
参照してくださいカールソン(bk2204

rebase--merge--skip続けて2つの競合を修正する

場合はgit rebase --merge、競合が発生し、--skip次も矛盾コミット場合は動作しません。ファイルには、新しいパッチ番号で更新することはないだろう、そう何のパッチが実際に避けられないループで、その結果、スキップされないだろう。
msgnum

msgnumcall_mergeで最初にファイルの値を更新します。
これによりAlready applied、コミットをスキップする際の" "メッセージも回避されます。
これらの状況ではmsgnumファイルの値は変更されないため、call_mergeが呼び出される他のコンテキストには目に見える変化はありません。


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

git add変更を忘れたようです...


これは「確認」のみで、2回目に変更は必要ありませんでした... git addはそのすぐ上にありました。
awm 2013年

そうですgit add、マージを使用して続行しましたが、別のファイルが競合しているために停止しました。そのため、そのファイルも修正する必要があります。ここで何か不足していますか?
John Brodie 2013年

1
マージが必要であると報告しているファイルと同じです。あなたのためだけに別の「git add」を実行しますが、それは同じ結果です。
awm 2013年

ありがとう!それが私の状況でした。私は対立を解決しましたが、変更を上演しませんでした。
Kirill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.