힘내 rebase 병합 충돌을 계속할 수 없습니다


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여전히 제대로 작동하지 않는 경우 가 있습니다. 힘내 2.0.2까지 (2014 년 7 월). 아래 내 답변
VonC

답변:


223

내가 본 두 가지 상황이 있습니다 rebase. 하나는 변경 사항이 널이되거나 (커밋이 이미 rebase에서 작성된 변경 사항을 갖는 경우) 사용하는 경우 git rebase --skip입니다.

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


아니, 그로 인해 "아니오"변경이 있었다. 나는 그것을 건너 뛰고 나중에 파일을 비교해야했습니다.
awm

내 '자식 풀 --rebase 기원 마스터는 "충돌 해결에 필요하고 건너 사이에 루프에 박히면서 등장 할 때 나에게 도움이 조금 더 인내심 후, 고정하고, 타이.!
AnneTheAgile

3
git status returns : "rebase in progress; <commitnumber> on '<commitnumber>'에서 분기 '<branchname>'을 (를) 리베이스하는 중입니다 (모든 충돌이 수정되었습니다 :"git rebase --continue "를 실행하십시오). git rebase --continue는 변경 사항을 반환하지 않지만 git rebase --skip는 변경 사항을 반환하지만 제 경우에는 그 상황이 반복해서 발생합니다. 맞습니까? 아니면 뭔가 잘못 되었습니까?
adi

감사. --skip변경 사항을 적용하는 것보다 더 나 빠질까 걱정 이 되었습니다 .
jchook

필자의 경우 Intellij Idea GUI와 SourceTree는 각 파일이 커밋에 추가 git status되었다는 것을 보여 주었지만 수정되었지만 커밋에는 추가되지 않은 파일이 있음을 보여주었습니다. 공연 add somefile.txt은 재베이스 작업을 계속할 수있었습니다.
azizbekian

16

내가이 문제에 부딪친 시간 중 하나는 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위해이 상황에서도 잘 작동 하는 것 같습니다.


6

참고 : 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가 호출되는 다른 컨텍스트에는 눈에 띄는 변경이 없습니다.


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

git add변경 사항 을 잊어 버린 것 같습니다 ...


그것은 "확인"일 뿐이며 두 번째 시간에는 변경 사항이 필요하지 않았습니다 ... git add는 바로 위에 있습니다.
awm

맞아, git add병합 을 사용한 다음 계속했는데 다른 파일이 충돌하여 중지되었으므로 해당 파일도 수정해야합니다. 여기에 뭔가 빠졌습니까?
존 브로디

1
보고해야하는 파일과 동일한 파일입니다. 좋아 당신을 위해 또 다른 "git add"를 할 것입니다. 그러나 그것은 같은 결과입니다.
awm

감사! 그것은 내 상황이었다 : 나는 갈등을 해결했지만 변화를 준비하지 않았다.
Kirill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.