카테고리 없음

git commit 안하고 checkout 한 경우 삭제 파일 되돌리기

pobii 2025. 2. 1. 13:33

특정 브랜치에서 코드 변경 후 push한 다음 다른 브랜치로 checkout하려 했다.

그런데 git commit에 오류가 났고, 그 사실을 모른 채 checkout했다....

 

결국 git add만 하고 commit과 push를 안한 상태로 다른 브랜치로 이동한 상태가 되었다.

수많은 코드를 추가했기 때문에 꼭 되돌려야만 했다.

 

당시 터미널 스크린샷. git commit에서 오류난 채로 checkout한 모습

 


시도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의 경우 아래 링크를 참고하여 해결하자.

https://stackoverflow.com/questions/46446901/how-can-i-see-local-history-changes-in-visual-studio-code#72417398