Git에서 Rebase 실행 취소

Azhar Bashir Khan 2021년12월25일
Git에서 Rebase 실행 취소

이 튜토리얼은 Git의 브랜치에서 수행된 rebase를 실행 취소하는 방법에 대해 설명합니다.

Rebasing은 지점의 기반을 새로운 기반으로 이동하는 작업입니다. 메인 브랜치를 기반으로 하는 기능 브랜치가 있다고 가정합니다. 그런 다음 기본 분기에 몇 가지 새로운 커밋이 있습니다. 새로운 기능을 기반으로 기능 분기를 리베이스할 수 있습니다.

우리는 이 rebase 작업을 다시 생각할 수 있습니다. 우리는 더 이상 메인 브랜치의 새로운 커밋을 기반으로 새로운 기능 브랜치를 만들고 싶지 않습니다.

기능 분기가 기본 분기에서 처음 분기할 때 커밋을 기반으로 하기를 원합니다. 따라서 이를 달성하려면 이제 브랜치에서 수행된 rebase 작업을 실행 취소해야 합니다.

이제 이를 예를 들어 설명하겠습니다.

git refloggit reset을 사용하여 Git의 분기에서 수행된 rebase 실행 취소

main 분기가 있고 그 위에 새 feature1 분기를 생성했다고 가정해 보겠습니다.

그리고 main 브랜치에서 일부 커밋이 발생했다고 가정해 보겠습니다. 새 커밋을 기반으로 새 분기 feature1rebase를 수행했습니다. 이것은 우리가 취소하려는 작업입니다.

rebase를 실행 취소하려면 Git의 reflog 명령을 사용할 수 있습니다. git reflog를 사용하여 rebase가 시작되기 직전에 분기의 헤드 커밋을 확인할 수 있습니다.

이제 feature1 브랜치에서 git reflog 명령을 실행할 것입니다(rebase가 수행된 지점).

$ git reflog

b745978 HEAD@{0}: rebase: that commit
4sd7c1c HEAD@{1}: rebase: this commit
adf3d3d HEAD@{2}: checkout: moving from main to feature1
...

HEAD@{2}rebase 작업 직전의 커밋임을 알 수 있습니다.

git reset을 사용하여 다음과 같이 분기를 이 커밋으로 재설정할 수 있습니다.

$ git reset HEAD@{2} --hard

위의 명령을 실행한 후 feaure1 분기는 이제 rebase 직전의 상태가 됩니다.

또는 다음과 같이 git reset을 사용하여 rebase를 실행 취소할 수도 있습니다.

$ git reset --hard ORIG_HEAD

ORIG_HEAD는 작업 전에 HEAD의 위치를 ​​기록하기 위해 HEAD를 과감하게 이동하는 명령에 의해 생성되므로 분기 팁을 실행하기 전 상태로 쉽게 다시 변경할 수 있습니다.

이 대체 접근 방식에 대한 주의 사항은 ORIG_HEAD viz를 변경할 수 있는 원하지 않는 rebase 후에 수행해서는 안 되는 다른 작업이 없다는 것입니다. reset, rebase 또는 merge.

따라서 이러한 방법을 통해 Git의 분기에서 원하지 않는 rebase를 취소할 수 있습니다.

관련 문장 - Git Rebase