git commit 안하고 checkout 한 경우 삭제 파일 되돌리기
특정 브랜치에서 코드 변경 후 push한 다음 다른 브랜치로 checkout하려 했다.
그런데 git commit에 오류가 났고, 그 사실을 모른 채 checkout했다....
결국 git add만 하고 commit과 push를 안한 상태로 다른 브랜치로 이동한 상태가 되었다.
수많은 코드를 추가했기 때문에 꼭 되돌려야만 했다.
시도1. git fsck --lost-found 명령어 사용하기
Git은 때때로 삭제된 변경 사항을 내부적으로 보관하고 있다고 한다.
git fsck --lost -found
이 명령어를 실행하면 Git이 관리하는 객체 중에서 잃어버린(commit되지 않은) 변경 사항을 찾을 수 있디.
그 후 아래 명령어로 변경사항을 찾아보았다.
git show [blob이름]
하지만 저 수많은 blob 기록들은 오래전의 변경사항이었고 내가 원하는 기록은 없었다.
시도2. git reflog 명령어 사용하기
git reflog는 최근 브랜치 변경 기록을 추적하여 사라진 변경 사항이 있는지 확인할 수 있다고 한다.
git reflog
하지만 애초에 commit을 하지 않은 상황이기 때문에 내가 원하는 기록은 당연히 나오지 않았다.
시도3. intelliJ의 Local History 사용하기
현재 intelliJ를 사용하고 있었는데, 이 IDE에서 이전 변경사항을 저장해준다고 한다!
- File - Local History - Show Project History 클릭
- checkout 하기 전 기록을 찾아 우클릭, "Revert Selected and Later Changes" 클릭
" Revert Selected and Later Changes" 버튼은 선택한 특정 버전으로 파일을 복구하고, 그 이후에 발생한 모든 변경 사항도 함께 되돌린다. 즉, 선택한 시점부터 이후 모든 변경 사항을 취소하게 된다.
이렇게 하면 checkout하기 전 버전으로 되돌릴 수 있다!
** VisualStudioCode의 경우 아래 링크를 참고하여 해결하자.