Git에서 실수로 커밋을 되돌렸을 때, 혹은 리셋을 진행했을 때 "내가 했던 작업들 다 사라진 거 아냐?" 하고 걱정한 적 있으신가요? 이럴 때 빛을 발하는 Git의 비밀병기가 있습니다. 바로 reflog입니다.
Git reflog란?
reflog는 HEAD가 지나간 모든 커밋 기록을 추적하는 로그입니다.
우리가 브랜치를 옮기거나, reset, commit, merge, checkout 등의 작업을 할 때마다 HEAD가 어떤 커밋을 가리켰는지를 기록으로 남겨줍니다.
쉽게 말해, Git 타임머신 같은 존재예요.
실수로 git reset --hard를 했어도, 이전 커밋으로 돌아갈 수 있는 히스토리가 남아 있는 거죠!
예시 상황
- 작업을 쭉 이어가며 여러 번 커밋
- 실수로 git reset --hard로 예전 커밋으로 돌아감
- "헉... 이전 커밋들 다 날아간 건가?" 😱
하지만 걱정 마세요! 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 한 번 실행해 보세요 :)
"아... 내가 이런 작업들을 해왔구나" 하는 감회가 들지도 몰라요.
'Data-Driven System Development > Git' 카테고리의 다른 글
Git Rebase 완벽 가이드: 병합보다 깔끔한 히스토리 정리법 (0) | 2025.03.26 |
---|---|
Git --graph로 커밋 히스토리를 시각적으로 확인하기 (0) | 2025.03.26 |
Git 협업하기: 필수 커맨드 정리 (0) | 2025.03.21 |
Git Merge의 동작 원리 완벽 이해하기 (0) | 2025.03.21 |
Git Reset과 Checkout의 동작 원리 완벽 이해하기 (0) | 2025.03.21 |