Skip to main content

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}

📌 정리

명령어

설명

git reflog

HEAD, 브랜치 이동 이력 확인

git reset --hard HEAD@{n}

과거 커밋 상태로 복원

git checkout -b <이름> HEAD@{n}

복구 브랜치 생성 (더 안전)