[2. 공부]/[2.1 코딩]

🧭 Git Reflog를 사용한 커밋 히스토리 복구 방법

주식경이 2025. 3. 6. 17:04
반응형

작업 중 잘못된 git reset이나 git rebase 명령어를 실행해 커밋 히스토리가 사라진 경험이 있나요? 실수로 브랜치를 삭제하거나 중요한 커밋을 되돌렸을 때, 당황하지 말고 **git reflog**를 사용하세요.

Git Reflog브랜치 참조 로그를 기록하여 모든 Git 명령어의 히스토리를 추적할 수 있습니다. 이를 통해 실수로 잃어버린 커밋이나 브랜치를 몇 번의 명령어로 복구할 수 있습니다.

🔑 핵심 내용:

  • Git Reflog의 개념과 필요성
  • 잃어버린 커밋과 브랜치 복구 방법
  • 실전 예시 및 안전한 복구 전략
  • 사용 시 유용한 팁과 주의사항

이 글에서는 Git Reflog의 사용법, 커밋 및 브랜치 복구 방법, 실전 활용 사례를 자세히 설명합니다. 🚀


🌱 1. Git Reflog란 무엇인가?

**git reflog**는 Git의 내부 참조 로그를 보여주는 명령어로, 브랜치 이동, 커밋, 병합, 리셋 등 모든 작업 내역을 추적할 수 있습니다. 일반 로그(git log)가 브랜치 히스토리만 보여주는 것과 달리, Reflog는 로컬에서 발생한 모든 변경 사항을 기록합니다.

📌 Git Reflog의 주요 특징

삭제된 커밋과 브랜치 복구 가능
최근 Git 명령어 히스토리 추적 지원
잘못된 reset, rebase, merge 실행 시 빠른 복구
로컬에서만 추적 (원격 저장소에는 적용되지 않음)

TIP: Reflog는 90일 동안 기본 유지되며, git gc 명령어 실행 시 오래된 기록은 삭제됩니다.


🛠️ 2. Git Reflog 기본 사용법

📝 Step 1: Reflog 조회하기

기본 명령어:

git reflog

출력 예시:

abc1234 (HEAD -> main) HEAD@{0}: commit: Fix login bug
def5678 HEAD@{1}: reset: moving to HEAD~1
ghi9012 HEAD@{2}: merge feature/cart
djk3456 HEAD@{3}: checkout: moving from main to feature/login

해석:

  • HEAD@{0}: 현재 위치
  • HEAD@{1}: 직전 명령어 실행 시점
  • 각 항목은 커밋 해시, 작업 내용, 커밋 메시지 포함

📝 Step 2: 잃어버린 커밋 복구하기

실수로 git reset --hard 실행 시:

git reflog  # 이전 커밋 해시 확인
git reset --hard <커밋 해시>

예시:

git reset --hard ghi9012  # 해당 커밋으로 복구

결과: 잃어버린 커밋과 작업 내용이 복구됩니다.


📝 Step 3: 삭제된 브랜치 복구하기

브랜치 삭제 전 위치 확인 및 복구:

git reflog  # 브랜치 삭제 전 커밋 해시 확인
git checkout -b <브랜치 이름> <커밋 해시>

예시:

git checkout -b feature/login def5678  # 삭제된 브랜치 복구

결과: 기존 브랜치 위치가 복원됩니다.


📝 Step 4: 이전 작업 시점으로 이동하기

특정 HEAD 시점으로 복귀:

git reset --hard HEAD@{2}

설명: HEAD@{2}는 두 번 전 작업 시점을 의미합니다.


🚀 3. 실전 예시: Git Reflog 활용 시나리오

🧩 예시 1: 잘못된 reset 후 커밋 복구

상황: 중요한 커밋을 잘못된 git reset --hard로 제거.

1️⃣ Reflog 조회:

git reflog

2️⃣ 삭제된 커밋 해시 확인 후 복구:

git reset --hard abc1234

결과: 삭제된 커밋과 작업 내용 복구 완료.


🧩 예시 2: 삭제된 브랜치 복구

상황: 실수로 git branch -D feature/ui-update 명령어 실행.

1️⃣ 삭제 전 브랜치 위치 확인:

git reflog

2️⃣ 브랜치 복구:

git checkout -b feature/ui-update ghi9012

효과: 삭제된 브랜치와 해당 작업 내역 복원.


🧩 예시 3: rebase 충돌 해결 실패 후 복구

상황: Rebase 도중 충돌 발생 → git rebase --abort 실패.

1️⃣ Reflog 사용:

git reflog

2️⃣ Rebase 전 커밋 위치로 복구:

git reset --hard HEAD@{3}

장점: Rebase 이전 상태로 안전하게 되돌아갈 수 있음.


⚙️ 4. Git Reflog 사용 시 유용한 팁과 주의사항

💡 효율적인 사용을 위한 팁

중요 작업 전 커밋 필수: 복구 시 참조 지점 확보
정기적인 Reflog 확인: 실수 예방 및 히스토리 파악
HEAD@{숫자} 이해: 숫자가 작을수록 최근 작업
삭제 전 Reflog 확인 습관화: 브랜치 및 커밋 안전 확보

⚠️ 주의사항

✔️ Reflog는 로컬 전용: 다른 개발자는 동일 기록 없음
✔️ 90일 이후 기록 삭제 가능: 장기간 작업 시 주의
✔️ git gc 실행 시 오래된 로그 삭제: 필요 시 백업 권장
✔️ git reset --hard 사용 시 주의: 작업 손실 방지를 위해 Reflog 활용


📝 5. Git Reflog와 Git Log 비교

기능git refloggit log

추적 범위 모든 HEAD 이동 기록 커밋 히스토리만 표시
사용 목적 복구 및 이전 위치 추적 변경 내역 확인
로컬/원격 적용 로컬 전용 로컬 및 원격 공유 가능
유지 기간 기본 90일 영구 유지
사용 시기 실수 복구, 브랜치 복원 코드 변경 확인

TIP: 실수 복구: git reflog 사용, 커밋 내역 확인: git log 사용.


📝 결론

Git Reflog는 실수로 인한 커밋 손실이나 브랜치 삭제 시 빠른 복구를 돕는 강력한 도구입니다. 잘못된 reset, rebase, merge 실행 시에도 Reflog 기록을 통해 안전하게 이전 상태로 되돌릴 수 있어 협업 시 실수 방지에 큰 도움이 됩니다.

지금 Git Reflog를 실습해 커밋 히스토리 복구 방법을 마스터하세요! 🧑‍💻🚀

👉 다음 글에서는 "Git Cherry-Pick으로 선택적 커밋 적용 방법"을 다룹니다. 많은 기대 부탁드립니다!


🏷️ 추천 키워드

  1. Git Reflog 사용법
  2. 커밋 복구 방법
  3. 브랜치 복구 팁
  4. git reset 복구 방법
  5. Reflog vs git log 비교
  6. 히스토리 안전 복구 전략
  7. Git 작업 실수 방지법
  8. 커밋 히스토리 되돌리기
  9. Git 브랜치 복원 방법
  10. 협업 시 Git 오류 해결

Git Reflog로 안전한 커밋 및 브랜치 복구를 시작하세요! 🚀

반응형