git - 로컬 커밋을 복구

박제영·2022년 10월 25일
0

회사에서 로컬에서만 커밋을 올리고 push는 안한 상태로 다른 브랜치를 오고가다 생긴 문제다.
문제는 로컬의 커밋이 다른 커밋버전으로 체크아웃만 하였는데 리셋을 한 것 처럼 4일동안의 작업분량이 사라진 문제였다.

새로운 화면을 만들면서 기존에 있던 기능들 안쓰고 직접 만들다보니 기존 기능에 영향을 미쳐서
정상동작하지 않음을 확인하였다.
때문에 과거 커밋버전으로 돌아가며 어느 부분에서 작성한 코드가 문제가 되는지 확인하다보니까
정말 알수없게도 10/20일 이후 커밋이 전부 사라져버리는 일을 발견했다

git reflog 로 커밋 기록을 보아도 체크아웃 / 기능개발 커밋 작성 한 거 말고는 다른 기록이
안보이는데 어느 순간 커밋들이 사라진걸 발견했다 (당시 당황해서 스샷을 남기지 못했다)

이때 유용한 기능이 git reflog 이다

본인은 vscode에서 깃관련 extension으로 git graph를 사용하는데
그래프에서 전부 사라져버린 커밋기록도 git reflog를 사용하면 위의 스샷처럼 커밋 기록이 나온다

HEAD@{높은숫자} 일수록 과거기록이며 낮은 숫자 일수록 가장 최근까지 작업한 커밋이다
때문에 위 스샷에서 나의 경우 복구하고 싶었던 부분은 체크아웃했던 HEAD@{5}이후인 6버전이 복구되야했던 상황

git reset 3761e6d0c 를 하니 다행스럽게도 4일간 야근까지하며 작업했던 기록이 복구가 되었다.

의아한건 git reflog를 보아도 체크아웃 말고는 한 행동이 없는데 어째서 reset한것처럼 로컬의
커밋기록이 사라져버린 것인지에 대한 원인은 파악을 못한 상태이다
때문에 "체크아웃만 하더라도 로컬의 커밋기록이 리셋을 한것 처럼 사라질 수 있다." 라고 현재는 인식하고 있다.

profile
개발 도중 만난 문제 해결을 서술하거나 기록 및 개인의 생각을 정리한 블로그

0개의 댓글