리베이스가 진행 중입니다. 커밋 할 수 없습니다. 진행 또는 중지 (중단) 방법


139

내가 실행할 때 :

git status

나는 이것을 본다 :

rebase in progress; onto 9c168a5
You are currently rebasing branch 'master' on '9c168a5'.
(all conflicts fixed: run "git rebase --continue")
nothing to commit, working directory clean

내가 할 때 :

ls `git rev-parse --git-dir` | grep rebase || echo no rebase

내가 본다 : rebase-apply

나는 기원을 저지를 수 없다.

git branch

쇼 :

* (no branch, rebasing master)
  develop
  master

나는 붙어있다. 어떻게해야할지 모르겠습니까? 리베이스하는 데 시간이 오래 걸립니까? git rebase --continue아무것도하지 않습니다. 자식 상태에 아무것도 없습니다. 단지 rebase를 기다리고 있습니다. 어떡해?

UDATE : git rebase --continue의 결과입니다.

Applying: no message
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 prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

git add. 아무것도 없습니다.

답변:


255

리베이스는 백그라운드에서 발생하지 않습니다. "rebase 진행 중"은 rebase를 시작했으며 충돌로 인해 rebase가 중단되었음을 의미합니다. 리베이스를 다시 시작 git rebase --continue하거나 ( ) 중단해야합니다 ( git rebase --abort).

의 오류 메시지에서 git rebase --continue알 수 있듯이 빈 패치를 생성하는 패치를 적용하도록 git에 요청했습니다. 패치가 이미 적용되었고를 사용하여 삭제하려고 함을 의미합니다 git rebase --skip.


귀하의 요청에 따라 git rebase를 포함하도록 게시물을 업데이트했습니다.
Joseph Chambers

2
그렇다면 "재활용-계속하지 마십시오"는 정확하지 않습니다. 도움을 받으려면 "git rebase-다음과 같이 오류를 계속하십시오 ..."를 작성해야합니다.
Matthieu Moy

3
이것에 대한 문서는 매우 나쁘다 .'git rebase --continue '을 계속 반복하면 무한한 말을 할 것이다.
Jean-Paul

6
git rebase-건너 did 다!
Borzh

이것은 (나 같은) 상대 초보자를위한 질문이기 때문에 나는 이것을 실행하는 것에 대한 모든 이야기를 언급 할 가치가 있다고 생각했다. 그 일을,
Kdean571

10

나는 '리베이스 상태'에 갇혀있어

On branch master
Your branch is up to date with 'origin/master'.

You are currently rebasing.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working tree clean

그러나 달리는 git rebase --skip산출 error: could not read '.git/rebase-apply/head-name': No such file or directory.

달리는 rm -fr ".git/rebase-apply"데 도움이되었습니다.

참고 : 물론 리베이스에 신경 쓰지 않거나 이전 리베이스에 붙어있는 경우에만 더 이상 원하지 않습니다.


8
  • 1 단계 : 계속 진행 git rebase --continue

  • 2 단계 : CONFLICTS를 수정 한 다음 git add .

  • 1 단계로 돌아갑니다. 이제 no changes ..실행이 완료 되면 git rebase --skip1 단계로 돌아갑니다.

  • 리베이스 실행을 종료하려면 git rebase --abort

  • 모든 변경이 완료되면 git commit -m "rebase complete"완료됩니다.


6

리포지토리에 리베이스하도록 지시했습니다. 커밋 (SHA 9c168a5로 식별) 한 다음 git rebase master또는 수행 한 것 같습니다 git pull --rebase master.

분기 마스터를 해당 커밋에 리베이스합니다. 을 통해 리베이스를 종료 할 수 있습니다 git rebase --abort. 이렇게하면 리베이스를 시작하기 전의 상태로 돌아갑니다.


나는 결코하지 않습니다 git rebase/pull --rebase master. 갈등 때문에 종종이 상태가됩니다. 나는 파일을 변경하고, 풀을 수행하고, 변경 사항을 복원하고 새로운 패치가 비어있어 git의 두뇌를 상하게 한 다음이 "rebase 모드"로 들어가기로 결정합니다.
Alexis Wilke

6

나는 최근에이 상태에 들어갔다. 리베이스 중 충돌을 해결 한 후을 실행하지 않고 변경 사항을 커밋했습니다 git rebase --continue. 그러면 git statusgit rebase --continue명령을 실행할 때와 동일한 메시지가 표시됩니다 . 을 실행 git rebase --abort한 다음 rebase를 다시 실행하여 문제를 해결했습니다 . 리베이스를 건너 뛸 수도 있지만 어떤 상태로 나를 떠날 지 확신하지 못했습니다.

$ git rebase --continue
Applying: <commit message>
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 prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

$ git status
rebase in progress; onto 4df0775
You are currently rebasing branch '<local-branch-name>' on '4df0775'.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working directory clean

--abort(+1) 외에도 이제 --quit( stackoverflow.com/a/41363262/6309 )
VonC

충돌을 수정 한 후 그런 다음 git commit을 호출하십시오. 다른 일을 한 다음 git commit을 다시 호출하십시오. 이 방법 git rebase --abort를 사용하면 커밋 충돌 후 수행중인 모든 작업을 원할 것입니다. 조심하세요
Jin

3

git rebase --abort작동하지 않고 여전히 얻을 수 있다면

오류 : '.git / rebase-apply / head-name'을 읽을 수 없습니다 : 해당 파일이나 디렉토리가 없습니다

유형:

git rebase --quit

0

내가 설정 내 gitautorebase A의git checkout

# in my ~/.gitconfig file
[branch]
    autosetupmerge = always
    autosetuprebase = always

그렇지 않으면 분기 사이를 전환 할 때 자동으로 병합됩니다. 기본값으로 최악의 선택이라고 생각합니다.

I 분기로 전환 한 후 그러나,이는 부작용이 git cherry-pick <commit-id>나는이에 결국 이상한 상태가 충돌이 매번.

실제로을 중단해야 rebase하지만 먼저 충돌, git add /path/to/file파일 (이 경우 충돌을 해결하는 또 다른 이상한 방법?!)을 수정 한 다음을 수행하십시오 git commit -i /path/to/file. 이제 중단 할 수 있습니다 rebase:

git checkout <other-branch>
git cherry-pick <commit-id>
...edit-conflict(s)...
git add path/to/file
git commit -i path/to/file
git rebase --abort
git commit .
git push --force origin <other-branch>

두 번째 git commit .는 중단에서 나온 것 같습니다. 중단해야한다는 것을 알게되면 답변을 수정하겠습니다.rebase더 빨리 .

--force다른 커밋을 건너 뛰고 두 가지하지 않으면 푸시에이 필요 부드럽게 (모두가 서로 커밋 누락).


"그렇지 않으면 분기간에 전환 할 때 자동으로 병합됩니다"— Um, no. Git은 브랜치를 전환 할 때 어떤 종류의 병합 또는 리베이스도 수행하지 않습니다. 새 분기를 구성 autosetupmerge하는 방법과 관련 git pull이 있습니다.
Marnen Laibow-Koser

이 문제와 싸울 때 현재 다양한 코드를 병합했습니다. 내 현재 설정이 해당 문제를 건너 뛰는 것 같습니다. 또한 전환을 시도하기 전에 현재 분기의 커밋 + 푸시를 수행하지 않은 문제가 있습니다.
Alexis Wilke

Git은 커밋되지 않은 변경으로 인해 분기를 전환하지 못할 지 여부를 알려줄 것이므로 걱정할 필요가 없습니다. 아니면 다른 것에 대해 이야기하고 있습니까?
Marnen Laibow-Koser 2016 년

0

IDE 에서 ABORT / SKIP / CONTINUE에 대한 또 다른 옵션

VCS> Git> 리베이트 중단

여기에 이미지 설명을 입력하십시오


0

광산은 BitBucket에서 나타나는 오류였습니다. 란은 git am --skip그것을 고정.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.