git reflog: Git 역사 복구의 핵심 도구
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 개발자 (Git 명령어 사용에 익숙한 중급 이상 개발자)
- 난이도 : 중간 (Git 기본 지식이 필요함)
핵심 요약
git reflog
는HEAD
와 브랜치 팁의 모든 변경 기록을 저장하여 데이터 손실을 방지하는 핵심 도구이다.- 사용 사례 : 편집기/터미널 충돌,
git reset
/git rebase
실수, 강제 푸시 후 복구 등 모든 Git 오류 상황에 적용 가능하다. git stash
,git reset --soft
,git revert
등의 보조 명령어와 결합하여 역사 관리의 안정성을 극대화할 수 있다.
섹션별 세부 요약
1. git reflog의 기본 개념
git log
는 최종 커밋 기록만 보여주지만,git reflog
는 모든 HEAD 이동 기록을 30일까지 보관한다.HEAD@{n}
형식으로 커밋 시점의 정확한 상태를 추적할 수 있다.git rebase
또는git reset
중 발생한 중간 상태도 복구 가능하다.
2. 실제 사례: 편집기 충돌로 인한 복구
git reset --soft HEAD^
실행 중 편집기 충돌로 인해 중간 변경 사항이 사라졌을 때,git reflog
를 통해 rebase 시작 전의 HEAD 상태를 확인하고 복구하였다.- 커밋 해시가 동일하더라도
HEAD@{n}
기록을 통해 이전 상태를 복구할 수 있다.
3. git reflog의 주요 사용 사례
git reset
/git rebase
로 과도한 롤백 시 복구- 편집기/터미널 중단 시 변경 사항 복구
- 수정된 커밋 또는 브랜치 전환 후 작업 복구
- 강제 푸시 또는 메르지 충돌 후 참조 복구
4. 보조 명령어 활용
git stash
: 미커밋 변경 사항을 일시적으로 저장하여 작업 전환 가능git reset --soft
:HEAD
이동 시 워킹 디렉토리 변경 사항 보존git cherry-pick
: 특정 커밋을 다른 브랜치에 적용git revert
: 이전 커밋을 무효화하는 새로운 커밋 생성
결론
- 정기적으로 원격 저장소에 푸시하고, 미완성 작업은
WIP
접두사를 사용하여 명시하는 것이 중요하다. git reflog
와git stash
등의 도구를 결합 활용하여 Git 역사 관리의 안정성을 확보하라.- 데이터 손실을 방지하고, 실무에서의 오류 회복력을 극대화할 수 있다.