Git | GitLab

[Git] reflog - HEAD 이력 확인하기

비번변경 2025. 6. 2. 18:31

개요

git reset으로 커밋을 취소하던 중 실수로 유지해야 하는 커밋도 함께 취소를 해버렸다. 방법을 찾던 중 reflog 명령여를 활용하는 방식이 있어 reflog라는 명령어 자체에 대해서 일단 알아보고자 한다.

 

 

reflog

로컬 저장소에서 HEAD 또는 브랜치가 업데이트된 시점을 기록한다. 이 이력은 로컬 저장소의 아래 경로에 기록된다.

.git/logs/ref/heads

# 또는
.git/logs/HEAD

즉, 변경 이력을 확인하고 싶다면 reflog 명령어가 아니라 위의 파일을 확인해도 된다.

 

reflog는 list, show, expire, delete 등 다양한 하위 명령어를 제공하고 있다. 이 글에서는 주로 show 명령어를 다루려고 한다.

 

 

사용법

기본적으로 아래와 같이 하위 명령어를 생략하여 사용하면 HEAD의 업데이트 이력을 확인할 수 있다.

git reflog

git reflog show HEAD

 

 만약 특정 브랜치의 업데이트 이력을 확인하고 싶을 때는 브랜치명을 지정한다.

git reflog 'BRANCH'

 

 

출력 정보

reflog 결과는 다음의 정보를 포함하고 있다.

56823eb (HEAD -> main) HEAD@{0}: rebase (finish): returning to refs/heads/main

- commit_id : HEAD가 가리킨 커밋의 HASH 아이디를 나타낸다.

- branch : HEAD가 가리키는 브랜치명을 나타낸다.

- commit 순서 : HEAD로부터 몇 번째 커밋인지 나타낸다. HEAD@{0}이면 현재 상태이고, HEAD@{2}이면 현재로부터 2번 전의 이력임을 나타낸다.

- 작업 명령어 : 변경을 유발한 명령어를 확인할 수 있다. commit, rebase, reset, checkout, cherry-pick, merge 등이 포함된다.

- 커밋 메시지 : 변경 커밋의 메시지를 출력한다.

 

 

참고 문서

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

https://seosh817.tistory.com/297#Git%20reflog%EB%9E%80%3F-1

 

728x90