Mastering Git Reflog: Essential Tool for History Recovery
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

git reflog: Git 역사 복구의 핵심 도구

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • 개발자 (Git 명령어 사용에 익숙한 중급 이상 개발자)
  • 난이도 : 중간 (Git 기본 지식이 필요함)

핵심 요약

  • git reflogHEAD와 브랜치 팁의 모든 변경 기록을 저장하여 데이터 손실을 방지하는 핵심 도구이다.
  • 사용 사례 : 편집기/터미널 충돌, 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 refloggit stash 등의 도구를 결합 활용하여 Git 역사 관리의 안정성을 확보하라.
  • 데이터 손실을 방지하고, 실무에서의 오류 회복력을 극대화할 수 있다.