Data-Driven System Development/Git

되돌아가고 싶을 땐 git reflog

Data Jun 2025. 3. 23. 18:36

Git에서 실수로 커밋을 되돌렸을 때, 혹은 리셋을 진행했을 때 "내가 했던 작업들 다 사라진 거 아냐?" 하고 걱정한 적 있으신가요? 이럴 때 빛을 발하는 Git의 비밀병기가 있습니다. 바로 reflog입니다.

 

Git reflog란?

reflog는 HEAD가 지나간 모든 커밋 기록을 추적하는 로그입니다.
우리가 브랜치를 옮기거나, reset, commit, merge, checkout 등의 작업을 할 때마다 HEAD가 어떤 커밋을 가리켰는지를 기록으로 남겨줍니다.

쉽게 말해, Git 타임머신 같은 존재예요.
실수로 git reset --hard를 했어도, 이전 커밋으로 돌아갈 수 있는 히스토리가 남아 있는 거죠!

 

예시 상황

  1. 작업을 쭉 이어가며 여러 번 커밋
  2. 실수로 git reset --hard로 예전 커밋으로 돌아감
  3. "헉... 이전 커밋들 다 날아간 건가?" 😱

하지만 걱정 마세요! git reflog를 입력하면…

HEAD@{0}: reset: moving to abad
HEAD@{1}: commit: Add square function
HEAD@{2}: commit: Add multiply function
HEAD@{3}: commit: Add divide function
...

 

예전의 HEAD가 가리키던 모든 커밋이 리스트로 뜹니다.
HEAD@{숫자} 형태로 확인할 수 있고, 해당 커밋으로 되돌아가고 싶다면 아래처럼 하면 됩니다:

git reset --hard HEAD@{2}

 

실무 팁

  • 중요한 작업을 되돌렸다면 reflog 먼저 확인해보세요!
  • reset뿐 아니라, branch 삭제, rebase, amend 같은 작업 이후에도 유용하게 사용됩니다.
  • 시간 순서대로 히스토리를 보여주기 때문에 작업 흐름을 되짚는 용도로도 훌륭합니다.

 

정리

 

마무리

Git은 실수를 충분히 되돌릴 수 있는 강력한 복구 기능을 제공합니다.
reflog만 잘 알고 있어도, 치명적인 실수를 막고 자신감을 가지고 Git을 쓸 수 있어요!

지금 당장 git reflog 한 번 실행해 보세요 :)
"아... 내가 이런 작업들을 해왔구나" 하는 감회가 들지도 몰라요.