🎸 etc

git commit이 사라졌을 때 해결방법

읏차 2024. 8. 31. 11:53

git을 사용하여 작업하던 도중 지금까지 작업한 커밋이 사라져 이를 해결한 방법을 공유한다.

먼저 해당 문제가 생긴 원인을 말하자면 HEAD(현재 브랜치의 최상위 커밋)에서이 아닌 다른 커밋에 체크아웃을하고 내용을 수정하고 커밋을 하다가 다른 브랜치로 체크아웃 했을 때 해당 현상이 발생할 수 있다.

 

1. 문제상황 재현을 위해 HEAD가 아닌 커밋에 체크아웃을 하고 커밋 한개를 생성했다. 맨 오른쪽에 보이는 커밋ID(1ebb018f)를 기억하자.

vscode의 extension인 git graph를 사용했는데 정상적인 상황이라면 커밋 왼쪽에 라벨로 현재 브랜치명이 표시되어야 하는데 아무것도 표시되지 않은 것을 확인할 수 있다. 이때 문제를 인지했어야 하는데....

 

2. 그리고 다른 브랜치로 체크아웃한 모습이다. 방금 전 커밋했던 내용이 온데간데없이 사라졌다. git log 명령어를 사용해도 찾을 수 없다.

 

3. Git bash에서 git reflog 명령어를 입력한다. 이 명령어는 git의 모든 참조로그를 보여준다. 살펴보면 checkout된 내역도 확인할 수 있고 중간에 아까 확인했던 커밋ID(1ebb018)을 확인할 수 있다.

 

4. git checkout 1ebb018 을 입력한다. 입력하면 1번과 같은 상태로 돌아온다. 이 때의 변경사항을 따로 저장하고 싶다면 현재 상태에서 branch를 생성하면 된다. 아래 사진은 test-branch라는 이름으로 새 브랜치를 생성한 뒤 모습이다.