git reflog (git reset 후 커밋 복구)
1. 상황 예시
git reset --hard HEAD~1
이 명령어로 가장 최근 커밋이 삭제되었고, 스테이징/작업 디렉토리도 초기화됨.
2. git reflog
란?
Git에서 브랜치가 가리키던 과거 위치들을 기록해 놓은 로그입니다.
git reflog
실행하면 다음과 같은 출력이 나온다.
c3d9f7b HEAD@{0}: reset: moving to HEAD~1
e7a1b2a HEAD@{1}: commit: 구현 완료
...
→ 이때 HEAD@{1}
이 우리가 잃어버린 커밋이다.
3. 복구 방법
git reset --hard HEAD@{1}
또는 해시값 직접 지정:
git reset --hard e7a1b2a
→ 이 명령으로 삭제된 커밋과 작업 내용 복원 완료!
추가 팁: 안전하게 복원하기
👉 --hard
는 위험하니, 안전하게 복원하려면 브랜치를 새로 만들어서 이전 커밋으로 가도 된다.
git checkout -b recovery HEAD@{1}
📌 정리
명령어 | 설명 |
---|---|
| HEAD, 브랜치 이동 이력 확인 |
| 과거 커밋 상태로 복원 |
| 복구 브랜치 생성 (더 안전) |