'master'ブランチに追いつくために '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".
何か案は?
rebase
がスタックするのを見たいくつかの状況があります。 1つは、変更がnullになった場合(リベースで既に行われた変更がコミットに含まれている場合)、その場合はgit rebase --skip
を使用する必要があります。
わかりやすいです。 git status
を実行すると、変更は表示されません。その場合は、スキップしてください。それが当てはまらない場合は、git status
のコピーを投稿してください。私はさらに支援を試みることができます。
私がこの問題に遭遇したのは、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
もこの状況でうまく機能するようです。
注:Git 2.0.2(2014年7月)は、git rebase --skip
がスタックし、現在のリベースを続行できないという1つのケースを修正しました。
を参照 commit 95104c7 by brian m。carlson(bk2204
)
rebase--merge
:--skip
を修正し、2つの競合が連続して発生する
git rebase --merge
が競合を検出した場合、次のコミットも競合した場合--skip
は機能しません。msgnum
ファイルは新しいパッチ番号で更新されることはないので、実際にパッチがスキップされることはなく、結果として不可避のループが発生します。Call_mergeの最初のものとして
msgnum
ファイルの値を更新します。
これにより、コミットをスキップする際の「Already applied
」メッセージも回避されます。
call_mergeが呼び出される他のコンテキストに目に見える変化はありません。これらの状況ではmsgnumファイルの値が変更されないためです。
$ vi src/com.... { verified, no >>> or <<< left, no merge markers }
$ git rebase --continue
git add
変更を忘れたようです...