작업을 하다 보면 commit을 정리하거나 merge conflict를 줄일 목적으로 force push나 hard reset을 하게 되는데, 몇 일간 작업하던 commit을 통째로 날려먹는 경험을 하게 되었다. Force push나 reset으로 날아간 commit은 복구할 수 없다고 알고 있었는데, 다행히도 다시 돌릴 수 있는 방법이 존재했다.
애초에 조심해서 이런 일이 없는게 가장 좋겠지만, 언젠가 또 같은 실수를 반복하게 될 것 같아서 기록을 남긴다.
Git에서 강제성을 띄는 작업(e.g. reset, force push 등)을 하다가 실수로 다른 commit이 다 날아가더라도, git 이력에는 최근 commit이 기록되고 있다. reflog
명령어를 사용하면 최근 기록된 commit들을 확인할 수 있다.
$ git reflog
이 명령어를 사용하여 다음과 같이 잃어버린 commit을 복구할 수 있었다.
git reflog
명령어를 사용해서 이전 commit 이력을 조회한다.git checkout
명령어로 해당 commit을 checkout한다.git push -f 로 사라진 commit 복구
이번 경험을 통해 배운 것