Important ● reflog 파일 탐색 ● reflog 명령어 ● 잃어버린 커밋 복구 ● 리베이스 되돌리기 Nice To Have ● 시간 기반 reflog 수식자 |
reflog는 reference 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 파일에서도 확인 할 수 있다. |
사라진 커밋 복구
1) 현재 로그
2) 특정 커밋으로 되돌리기
3) 사라진 커밋 복구
리베이스 취소
1) Interactive rebase 작업 후
2) reflog show
3) Interactive rebase 이전으로 되돌리기
이렇듯 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
Section 19: Reflog의 힘 -'사라진' 작업 복구하기
reflog는 reference log의 줄임말로 깃이 우리들을 위해 보관하는 레퍼런스 기록이다. 깃은 레퍼런스에 변경 사항이 있을 때마다 깃이 기록을 남기고 이것들을 파일에다가 저장해둔다. .git 안에 logs
velog.io
'Git & Github > [인강] Git & Github 실무 활용 완벽 가이드' 카테고리의 다른 글
[Git & Github] 20. 사용자 지정 Git Alias 작성하기 -完- (0) | 2025.05.02 |
---|---|
[Git & Github] 19-1. dangling commit 이란? (0) | 2025.05.02 |
[Git & Github] 18-1. 해시 함수 (1) | 2025.05.02 |
[Git & Github] 18. Git의 이면 - 해싱(Hashing)과 객체 (0) | 2025.05.02 |
[Git & Github] 17. 히스토리상의 중요한 순간에 표시하기 (0) | 2025.05.02 |