힘내 리베이스를 롤백하는 방법 리베이스를 수행하고 아직 푸시하지

Git에서 마음에 들지 않으면 리베이스를 어떻게 롤백합니까?

Git에는 rebase를위한 드라 이런이 없습니다. 리베이스를 수행하고 아직 푸시하지 않은 경우, 발생하지 않은 것처럼 이전으로 롤백하려면 어떻게해야합니까?



답변

reflog 를 사용하여 rebase가 시작되기 전에 첫 번째 작업을 찾은 다음 –hard를 다시 재설정 할 수 있습니다. 예 :

$ git reflog

b710729 HEAD@{0}: rebase: some commit
5ad7c1c HEAD@{1}: rebase: another commit
deafcbf HEAD@{2}: checkout: moving from master to my-branch
...

$ git reset HEAD@{2} --hard

이제 rebase가 시작되기 전으로 돌아 가야합니다.

재설정 할 올바른 위치를 찾으려면 “rebase”로 시작 하지 않는 맨 위에 가장 가까운 항목을 선택하기 만하면 됩니다.

대체 접근법

rebase가 브랜치에서 수행 한 유일한 작업 인 경우 , 즉 푸시되지 않은 커밋 / 변경 사항이없는 경우-로컬 브랜치를 삭제 git branch -D한 다음 다시 확인할 수 있습니다.

$ git checkout my-branch
$ git rebase master
// not happy with result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch

또는 동일한 효과를 위해 –hard를 원본 분기로 재설정 할 수 있습니다.

$ git reset --hard origin/my-branch

푸시되지 않은 다른 커밋이있는 동안이 작업을 수행하면 해당 커밋을 잃게됩니다. 이 경우 위의 reflog 접근 방식을 사용하여 커밋을 만든 reflog 항목으로 다시 이동하십시오.


답변

Rebase는 이전 상태의 백업을 ORIG_HEAD.
따라서 다음을 실행하여 마지막 리베이스를 되돌릴 수 있습니다.

git reset --hard ORIG_HEAD