Git & Github/[인강] Git & Github 실무 활용 완벽 가이드

[Git & Github] 19. Reflog의 힘 - '사라진' 작업 복구하기

pakms980319 2025. 5. 2. 16:11
Important

    ● reflog 파일 탐색
    ● reflog 명령어
    ● 잃어버린 커밋 복구
    ● 리베이스 되돌리기



Nice To Have

    ● 시간 기반 reflog 수식자

 

reflogreference log의 약어이다.

커밋을 잃어버리거나 rebase를 하지 말아야 할 때 rebase를 하는 등 문제를 되돌리고 싶을 때 사용한다.

 

reflog는 지역적으로 동작한다. 내 컴퓨터의 참조목록에 대한 변경사항만을 저장하고 기록한다.

또한 로그가 영구적으로 남지 않고 기본 설정으로는 90일 정도 지나면 삭제된다.


git reflog

show, expire, delete, exists 총 4가지의 하위 명령어와 같이 사용하지만 show 말고는 별로 사용되지 않는다.

git reflog show <ref> : ref의 이력을 모두 확인한다.

 

ref 를 작성할 때 참고하면 좋은 내용

1) HEAD~2와 HEAD@{2}는 다르다.
    ● HEAD@{2}는 HEAD의 2항목 이전의 움직임이다.
    ● 커밋이 아니라 단순히 switch일 수도 있는 것이다.

2) reflog의 모든 항목에는 타임 스탬프가 존재하기 때문에 항목 지정 뿐만 아니라 날짜를 지정할 수도 있다.
    ● git reflog main@{2}  # 항목 지정
    ● git reflog main@{2.days.ago}  # 날짜 지정 - 일
    ● git reflog main@{one.week.ago}  # 날짜 지정 - 주
    ● git reflog main@{yesterday}  # 날짜 지정 - 어제
    ● 기타 등등 ...

3) HEAD의 참조 내역은 .git/logs/HEAD 파일에서도 확인 할 수 있다.

 

git reflog show <ref> 사용예시

 


사라진 커밋 복구

1) 현재 로그

git log --oneline

 

2) 특정 커밋으로 되돌리기

git reset --hard <commit-hash>
커밋 134a1ad로 돌아감 (이후 커밋들 사라짐)
reflog show로 사라진 커밋 확인 및 되돌리기 작업도 확인 가능하다.

 

3) 사라진 커밋 복구

reset --hard 작업 전 항목으로 되돌리기
사라진 커밋이 복구됨

 

 

리베이스 취소

1) Interactive rebase 작업 후

interactive rebase

 

2) reflog show

reflog show

 

3) Interactive rebase 이전으로 되돌리기

 

reset --hard
rebase -i 작업이 취소됨

 

 

 

이렇듯 reset이나 interactive rebase 작업으로 인해 사라진 커밋은 reflog와 reset을 사용하여 되돌랄 수 있다.

 


명령어로 커밋들을 삭제한다고 해서 실제로 삭제되는 것이 아니라 댕글링 커밋이 된다.

reflog는 모든 로그가 남기 때문에 댕글링 커밋들을 되살릴 수 있는 것이다.

 

앞서 언급했듯이 reflog지역적이고 영구적이지 않다는 것을 명심해야 한다.


참고

1) https://www.udemy.com/course/best-git-github

2) https://erikanes.tistory.com/384

 

[Git & Github] 19. Reflog의 힘 - '사라진' 작업 복구하기

Important reflog 파일 탐색 reflog 명령어 잃어버린 커밋 복구 리베이스 되돌리기 Nice To Have 시간 기반 reflog 수식자 reference log의 약어이다. 커밋을 잃어버리거나 rebase를 하지 말아야 할 때 rebase를 하는

erikanes.tistory.com

3) https://velog.io/@southernlight/Section-19-Reflog%EC%9D%98-%ED%9E%98-%EC%82%AC%EB%9D%BC%EC%A7%84-%EC%9E%91%EC%97%85-%EB%B3%B5%EA%B5%AC%ED%95%98%EA%B8%B0

 

Section 19: Reflog의 힘 -'사라진' 작업 복구하기

reflog는 reference log의 줄임말로 깃이 우리들을 위해 보관하는 레퍼런스 기록이다. 깃은 레퍼런스에 변경 사항이 있을 때마다 깃이 기록을 남기고 이것들을 파일에다가 저장해둔다. .git 안에 logs

velog.io