"git rebase --continue"를 잊어 버리고 "git commit"을 수행했습니다. 어떻게 고치는 지?


112

git에서 코드를 리베이스하고 있었고 병합 충돌이 발생했습니다. 나는 갈등을 해결하고 다음을 수행했습니다.

git add

이 시점에서 나는하는 것을 잊었다.

git rebase --continue

나는 코딩을 계속했고 다음과 같이했습니다.

git commit

변화를 위해. 이제 나는 켜져 "no branch"있고 할 수 없습니다.

git rebase --continue 

이 문제를 어떻게 해결합니까?


# 현재 어떤 지점에도 없습니다. 아무것도 (디렉토리 청소 작업) 커밋 없습니다
Abhilash

답변:


5

편집 : 그것이 당신에게 더 쉬운 해결책인지 확인하기 위해 아래 답변을보십시오. https://stackoverflow.com/a/12163247/493106


나는 그것을 시도해야하지만 이것이 내가 할 것이라고 생각합니다.

  1. 최신 커밋에 태그를 지정하거나 SHA1을 잃어 버리지 않도록 어딘가에 적어 둡니다. git tag temp
  2. git rebase --abort
  3. rebase를 다시 수행하십시오. 병합을 다시 해결해야합니다. :(
  4. git rebase --continue
  5. git cherry-pick temp

이 문제는 temp커밋에 병합의 해결 방법과 새 코드가 모두 포함되어 있다는 것입니다. 그래서 까다로울 수 있지만 시도해보고 작동하는지 확인합니다.


@MatrixFrog가 말한 것처럼 태그를 지정하거나 패치로 저장할 수도 있습니다. 그런 다음 rebase 중단을 수행하십시오. 상태를 확인하여 저장소가 문제가 없다고 알고있는 상태인지 확인한 다음 가져 오기 및 리베이스를 시작하십시오.
yasouser

17
이러지마 훨씬 간단하고 깨끗한 방법은 아래 kirikaza의 답변을 참조하십시오. 두 번째로 문제를 해결하고 갈등을 해결하지 마십시오.
tandrewnichols

4
@Abhilash kirikaza의 답변을 받아주세요. 나는 (tandrewnichols처럼) 이것을했고 훨씬 더 쉬운 방법이있었습니다 (그리고 그 대답이 4 배의 찬성표를 가지고 있기 때문에 인터넷은 동의하는 것 같습니다).
David Doria

이제 upvotes의 10 배입니다 ... 또한 git rerere를 사용하여 충돌 해결을 기억하십시오 (기억하지 않으려는 나쁜 해결을 가끔하지 않는 한 유용합니다).
Ajax

216

그냥하세요 git reset --soft HEAD^. HEAD 포인터를 부모로 이동하지만 작업 트리를 유지하고 병합 변경 사항을 인덱스에 추가합니다. 따라서 git rebase --continue이전 과 같이 리베이스를 계속할 수 있습니다 .


1
이것은 완전히 효과가 있었고, --soft의 용도를 처음 발견 한 때이기도합니다. 어떻게 작동하는지 알아서 반갑습니다, 감사합니다!
mmocny

1
나는 사람들 이이 답변에 대한 모든 찬성표를보고 여기에 제안 된 것을 따르기를 바랍니다!
Raghu

1
이것이 바로 제가 생각했던 것입니다 (하지만 우연히 힘들게 지나갔을 수도 있습니다). 그래도 리베이스 중에 HEAD가 업데이트되고 있는지 확실하지 않았습니다. 확인 해주셔서 감사합니다! 위의 두통을 엉망으로 만들기 전에 조금 더 스크롤하여 기뻤습니다.
DeezCashews

여기에 링크를 추가하기 위해 수락 된 답변을 편집했습니다. 위의 지침을 따를 때까지이 답변을 볼 수 없었습니다.
xaxxon 19

0

나는 같은 문제를 겪었고, 설상가상으로 3 개의 커밋을 리베이스하고 있었고, 두 번째 커밋에서 충돌을 해결 한 후 "rebase --continue"대신 "커밋"했습니다.

결과적으로 나는이 자식 reflog를 가졌습니다.

kirikaza의 솔루션을 적용 할 때 문제가되는 두 번째 커밋이 아닌 세 번째 커밋을 되돌 렸습니다.

보시다시피 rebase는 remotes / origin / master 브랜치의 체크 아웃으로 시작한 다음 reflog에서 이전 작업 (체크 아웃 전)으로 나타나는 세 개의 커밋을 적용합니다.

그런 다음 클린베이스에서 다시 시작하려면 rebase 전에 rebase 작업을 체크 아웃하기 직전에 해시로 하드 재설정하면됩니다. 제 경우에는 (그림 참조) :

git reset --hard 859ed3c

그런 다음 새 git rebase.


0

나는 git rebased, 고정 충돌, git 추가 파일 충돌 및 (잘못) 커밋했습니다.

나는 시도 git reset --soft HEAD^git reset --hard솔루션을 제공하지만, 어느 쪽도 아니 나를 위해 일하지 않는다.

그러나 방금 git rebase --abort작동했습니다. 깨끗한 작업 트리로 리베이스를 시작하기 전에 저를 다시 데려갔습니다.

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