피드로 돌아가기
Dev.toDevOps
원문 읽기
Git Reflog를 활용한 90일 이내의 데이터 유실 원복 전략
git reflog: Recover Commits You Thought Were Gone Forever
AI 요약
Context
Git Log 기반의 이력 추적은 Branch Pointer 변경 시 도달 불가능한 Commit을 식별하지 못하는 한계 존재. Reset이나 Rebase 등 파괴적 작업 수행 시 작업 내역이 가시성 범위에서 사라지는 문제 발생.
Technical Solution
- HEAD 포인터의 모든 이동 경로를 기록하는 Reflog 메커니즘을 통한 Commit 추적
- Object Store 내 실제 데이터 존재 여부와 Pointer 참조 분리를 통한 데이터 보존 원리 활용
git reflog명령어로 HEAD@{n} 형태의 인덱스를 추적하여 Reset 이전 상태로 Hard Reset 수행git fsck --lost-found를 통한 dangling commit 식별로 Reflog 외의 유실 객체 탐색gc.reflogExpire설정을 통한 데이터 보관 주기 최적화 및 복구 윈도우 확장- Commit-first 전략을 통한 Working Tree의 Unstaged 변경분 유실 방지 설계
실천 포인트
1. 파괴적 작업 전 `git commit -m "wip"`로 스냅샷 생성
2. `git reflog`로 HEAD 이동 이력 확인 후 `git reset --hard HEAD@{n}` 적용
3. 삭제된 Branch 복구를 위해 `git reflog show --all` 기반 Hash 추출
4. 최후 수단으로 `git fsck --lost-found`를 통한 dangling commit 분석