본문 바로가기
Management/GIT

[GIT] 깃(Git) 참조 로그(reflog)란? (ft. 커밋 취소 복구하기)

by 썸머워즈 2022. 10. 19.
반응형

git reflog

git reflog란 무엇일까?

여기서 reflog는 reference log를 의미한다. 즉, 제목에서 쓰인 것처럼 참조 로그를 말한다고 생각하면 된다.

이력이라고 해서 모든 사소한 이력을 기록하는 게 아니라, 이전에 HEAD가 가리키고 있었던 내용들을 전부 기록한다고 생각하면 된다. (명령어로 인해 가리키고 있던 HEAD의 포인터가 변경될 때마다 저장된다고 생각하면 된다.)

$ git reflog

 

그렇다면 이 git reflog를 통해 무엇을 할 수 있을까?

일단 가장 흔하게 사용되는 것은 git reset --hard 옵션을 통해 날려버렸던 내용들을 다시 복구하는데 주로 사용된다.

말 그대로 커밋 취소를 취소한다(?) 라고 생각할 수 있을 것 같다.

 

그 외에 브랜치를 복구한다거나 뭐 찾아보면 다양한 사용처가 있을 거라고 생각된다.

commit 복구하기

우선 아래와 같은 상황이라고 생각해보자.

 

이 상황에서 현재 HEAD가 가리키고 있는 commit을 git reset --hard 명령어를 통해 날려보자.

 

이 상황에서 보면 알겠지만 git reset 명령어의 --hard 옵션을 통해 작업했던 내용이 전부 날라갔다.

만약에 실수로 날려버렸어도 reflog를 통해 복구가 가능하다.

$ git reflog
$ git reset --hard <reflog HASH>

 

기존에 날라갔던 커밋의 HASH가 reflog에 존재하다보니 그 HASH를 가지고 git reset --hard 명령어를 통해 복구가 가능하다. 실제로 날라갔던 내용들이 사용해보면 전부 복구된 것을 알 수 있을 것이다.


참고: https://git-scm.com/docs/git-reflog

 

Git - git-reflog Documentation

The command takes various subcommands, and different options depending on the subcommand: git reflog [show] [ ] [ ] git reflog expire [--expire= ] [--expire-unreachable= ] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all [--singl

git-scm.com

참고: https://suwoni-codelab.com/git/2018/04/07/Git-reflog/

 

Git을 잘 써보자- 12. git 복구 - git reflog

git reflog 관해 정리해봅니다.

suwoni-codelab.com

반응형


댓글

TOP