포스트

git reflog로 삭제된 커밋·브랜치 복구하기

git reset이나 rebase로 사라진 커밋도 git reflog에 남아있다. 커밋 ID로 되돌리거나 삭제된 브랜치를 다시 만드는 절차.

git reflog로 삭제된 커밋·브랜치 복구하기

reflog로 사라진 작업 되살리기

git reset --hardgit rebase로 커밋이 사라져도, 브랜치를 실수로 지워도, 대부분은 되살릴 수 있습니다. Git은 HEAD가 움직인 이력을 reflog에 남겨두기 때문입니다. 커밋 ID만 찾아내면 커밋도, 브랜치도 원래 상태로 복구할 수 있습니다.

아래 순서대로 진행하면 됩니다.

1. 삭제된 커밋 확인

1
git reflog
  • git rebase, git reset 등으로 커밋이 사라지더라도 Git은 이력을 보관합니다.
  • git reflog에서 되돌리고 싶은 지점의 커밋 ID를 찾습니다.

2. 삭제된 커밋 복구하기

1
git reset --hard <커밋해시ID>
  • git reflog에서 확인한 커밋 ID로 HEAD를 되돌려 삭제된 커밋을 복구합니다.
  • --hard 옵션은 작업 디렉토리의 변경 사항을 모두 덮어쓰므로 주의해야 합니다.

3. 삭제된 브랜치 복구하기

3-1. 브랜치 로그 확인

1
2
3
git reflog
# 또는 특정 브랜치만 확인
git reflog | grep <브랜치명>

3-2. 브랜치 재생성

1
git checkout -b <삭제한 브랜치명> <커밋해시ID>

브랜치를 삭제했더라도 커밋 ID만 알면 원래 상태로 다시 만들 수 있습니다.

4. 특정 파일 전체 로그 확인

1
git log --all --full-history -- <path-to-file>

특정 파일의 모든 변경 이력을 확인합니다. 삭제된 커밋이나 변경 사항을 추적할 때 유용합니다.

git reset --hard는 작업 중인 변경 사항을 모두 날립니다. 필요하면 백업 후 실행하는 것을 권장합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.