거의 막바지에 다다른 프로젝트의 마무리를 내가 맡게 되었다.
해당 프로젝트의 Git도 마무리 단계였기 때문에
나 혼자서 commit을 여러 번 하고, squash 하여 push 하는 식으로 사용하고 있었다.
여느 때와 같이
git rebase -i HEAD~3 명령어를 써서 squash를 하려고 했는데,
아무생각 없이 squash 해야 하는 두 commit 내역을 dd 명령어로 지워버렸다.
다행히 commit log 들이 남아있기 때문에, 이 log를 검색해서 복구할 수 있었다.
1번 커밋부터 3번 커밋까지 총 3번의 커밋을 한 뒤,
git rebase -i HEAD~3 으로 squash 를 하려 했으나 실수로 2, 3번 커밋을 삭제하였다.
git graph 에는 2, 3번 커밋 내역이 사라져버렸다..
// commit 내역 조회
git reflog
// commit 내역 복구
git reset {--sort | --hard | --mixed} [commit id]
첫 번째 사진처럼 git reflog 명령어로 모든 commit 내역을 확인할 수 있다.
여기서 복구하고 싶은 commit id 를 복사하고,
git reset --hard [commit id] 명령어를 실행하면 두 번째 사진처럼 2, 3번 커밋이 복원되어 있는 것을 볼 수 있다.
git reset 에는 작성되어 있는 것 처럼 3가지 옵션이 존재하는데,
이 부분은 좀 더 공부하고 정리해서 다음에 기회가 될 때 포스팅해보려 한다.
'Git' 카테고리의 다른 글
Git | remote ref does not exist 오류 해결 (0) | 2024.02.02 |
---|---|
Git | 로컬 및 원격 브랜치 삭제하기 (1) | 2024.01.04 |
Git | Staging 제외하고 Stash 하기 (0) | 2023.06.08 |
Git | 강제로 Pull 받기 (0) | 2022.11.09 |
Git | Stash 복구하기 (0) | 2022.05.30 |