Git히스토리와 복구

reflog 기본과 복구

실수로 브랜치 포인터를 옮기거나 reset으로 커밋이 사라진 것처럼 보일 때, reflog로 최근 이동 기록을 어떻게 되찾는지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

text
git reflog
git reset --hard HEAD@{2}

설명

  • git log가 커밋 히스토리를 보여 준다면, git reflog는 내 로컬에서 HEAD와 브랜치 포인터가 어떻게 움직였는지의 최근 기록을 보여 줍니다. 그래서 "사라진 것 같은 커밋"을 되찾을 때 특히 강합니다.
  • reset --hard, rebase, checkout, commit amend 같은 작업을 하다 보면 브랜치 끝이 예상과 달라질 수 있습니다. 이때 reflog를 보면 얼마 전까지 HEAD가 어디를 가리켰는지 추적할 수 있습니다.
  • 중요한 점은 reflog가 "로컬 작업 기록"이라는 것입니다. 원격 저장소의 공식 히스토리가 아니라, 내 저장소 안에서 포인터가 움직인 흔적을 보는 도구입니다.
  • 그래서 reflog는 협업용 로그보다 응급 복구용 로그에 가깝습니다. 실수 직후 빠르게 확인하면 복구 가능성이 매우 높아집니다.
  • Git을 오래 쓰다 보면 "이 커밋이 완전히 사라진 걸까?"라는 순간이 오는데, 그때 가장 먼저 떠올릴 명령이 reflog라고 생각하면 좋습니다.

빠른 정리

명령/개념의미
git reflogHEAD와 브랜치 포인터 이동 기록 보기
HEAD@{n}과거 시점의 HEAD 참조
잘 맞는 상황reset, rebase, amend 후 복구
핵심 성격로컬 응급 복구 기록

주의할 점

reflog는 만능 백업이 아니라 로컬 이동 기록입니다. 시간이 지나 정리되면 오래된 항목은 사라질 수 있으니, 실수 직후 바로 확인하는 편이 가장 효과적입니다.

참고 링크

1 sources