태그 보관물: git-rebase

git-rebase

힘내 rebase 병합 충돌을 계속할 수 없습니다 from SVN. When you

‘마스터’분기를 따라 잡기 위해 ‘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. 하나는 변경 사항이 널이되거나 (커밋이 이미 rebase에서 작성된 변경 사항을 갖는 경우) 사용하는 경우 git rebase --skip입니다.

말하기 쉽다. 당신이 할 경우 git status는 변경이 없어야한다. 그렇다면 그냥 건너 뛰십시오. 그렇지 않은 경우 사본을 게시하면 git status도움을 드릴 수 있습니다.


답변

내가이 문제에 부딪친 시간 중 하나는 git commit후를 할 때 git add입니다. 따라서 다음 순서는 언급 한 rebase 오류를 생성합니다.

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위해이 상황에서도 잘 작동 하는 것 같습니다.


답변

참고 : Git 2.0.2 (2014 년 7 월)에서 a git rebase --skip가 멈춰 현재 리베이스를 진행할 수없는 경우가 수정 되었습니다. brian m의 commit 95104c7
참조하십시오 . 칼슨 ( )bk2204

rebase--merge: --skip두 번의 충돌로 해결

git rebase --merge충돌 이 발생 --skip하면 다음 커밋도 충돌하면 작동하지 않습니다 . 어떤 패치가 실제로 생략되지 않을 것이다, 그래서 파일은 피할 수없는 루프의 결과로, 새로운 패치 번호가 업데이트되지 않을 것입니다.
msgnum

msgnumcall_merge에서 파일 값을 가장 먼저 업데이트하십시오 .
또한 Already applied커밋을 건너 뛸 때 ” “메시지가 표시되지 않습니다.
이러한 상황에서 msgnum 파일의 값은 변경되지 않으므로 call_merge가 호출되는 다른 컨텍스트에는 눈에 띄는 변경이 없습니다.