WEBBOOK CHAPTER

현장에서 살아남는 Git: 17장 reflog로 사라진 커밋을 다시 붙잡는다

17장 reflog로 사라진 커밋을 다시 붙잡는다

reflog는 로컬에서 HEAD와 브랜치 참조가 어디로 이동했는지 기록한다. reset, rebase, branch delete 뒤 커밋 이름을 잃었을 때 유용하다.


git reflog --date=local
git show <찾은-커밋ID>
git branch rescue/incident-2026-08 <찾은-커밋ID>

첫 단계에서 바로 reset하지 않는다. git show로 찾은 커밋이 맞는지 확인하고 임시 rescue 브랜치를 만들어 이름을 붙인다. 그 다음 원래 브랜치에 merge, cherry-pick, reset 중 무엇이 맞는지 결정한다.

reflog는 로컬 기록이다. 다른 컴퓨터의 reflog나 서버의 영구 백업이 아니다. 정리 정책과 시간이 지나면 객체가 제거될 수 있다. 그래서 중요한 작업은 작은 커밋과 안전한 원격 브랜치로 일찍 공유한다.