2024. 12. 19. 22:18ㆍGit
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
git rebase는 커밋 히스토리를 정리하거나 수정할 때 유용한 명령어입니다. 하지만 실수로 잘못 진행하거나 충돌이 발생했을 때 이를 취소하고 원래 상태로 되돌리고 싶을 수 있습니다. 이번 포스팅에서는 git rebase를 취소하는 방법과 상황별 해결책을 정리했습니다.
git rebase 취소하기
Rebase 진행으로 충돌이 발생하여 더 이상 진행을 원하지 않을 경우, 아래 명령어를 사용해 Rebase를 완전히 취소할 수 있습니다.
git rebase --abort
git reflog 분석 및 상태 되돌리기
Rebase가 이미 완료된 경우, 이전 상태로 복구하려면 우선 git reflog를 통해 HEAD가 이동한 모든 기록을 확인합니다.
1. 현재 브랜치의 커밋 기록 확인
git reflog
주어진 git reflog 출력은 시간순으로 가장 최근 작업이 위쪽에 위치합니다. 각 항목은 HEAD의 이동 기록을 나타내며, 가장 최근 상태부터 과거로 거슬러 올라갑니다.
...
5dc89caf4b6 (origin/feature/qa7-base) HEAD@{9}: rebase (start): checkout origin/feature/qa7-base
c6519bd8940 (origin/feature/moloco-add) HEAD@{10}: checkout: moving from dev to feature/moloco-add
...
HEAD@{9} : origin/feature/qa7-base 브랜치로 rebase를 시작한 상태입니다.
HEAD@{10} : dev 브랜치에서 feature/moloco-add로 체크아웃한 상태입니다. rebase 시작하기 전 상태입니다.
2. 이전 상태로 복구
git reset --hard는 작업 디렉토리의 모든 변경 사항을 삭제합니다. 만약 변경 사항을 잃고 싶지 않다면, 먼저 git stash를 사용해 안전하게 저장하세요.
git reset --hard HEAD@{9}
Rebase를 다시 시작하고 싶다면
현재 상태를 유지하거나, HEAD@{9}으로 돌아간 후 Rebase를 재시도할 수 있습니다.
git reset --hard HEAD@{10}
Rebase를 완전히 취소하고 싶다면
HEAD@{10}으로 돌아가면 Rebase 이전 상태로 복구됩니다.
이렇게 git rebase를 취소하는 방법과 상황별 대응에 대해서 알아보았습니다.
'Git' 카테고리의 다른 글
[Git] PR 커밋 해시를 활용한 브랜치 생성 : 쉽고 간단한 가이드 (0) | 2024.10.23 |
---|---|
[Git] GitHub에서 Squash Merge로 프로젝트 히스토리 깔끔하게 정리하기 (0) | 2024.07.07 |
[Git] 2가지 방법으로 변경사항 가져오기 (feat. git checkout, git cherry-pick) (2) | 2024.03.24 |
[Git] Git Stash : 변경사항을 임시로 저장하는 방법 (1) | 2024.03.20 |
[Git] Git 리베이스: 작업 브랜치의 변경 사항을 최신 상태로 유지하는 방법 (0) | 2024.03.19 |