Reflog 와 clean 은 도구 상자 바닥의 도구
매일 필요 없어야 할 명령 둘. 그래도 필요한 날엔 차갑게 알아둬야 해. git reflog 는 HEAD 가 한 모든 이동의 Git 의 local 기억 — 모든 commit, reset, rebase, switch — default 로 90일. '잃은' 작업 찾는 방법. git clean 은 working tree 의 untracked 파일 제거 — 'build 후 이 잡동사니 다 뭐야?' 와 '진짜 깨끗한 checkout 원해' 의 답. 둘 다 local-only, 둘 다 부주의하면 재앙을 부르고 신중하면 재앙을 막아.
Reflog 이야기는 보통: 패닉 순간, '방금 git reset --hard 해서 하루치 작업 잃음.' 차분한 반응: git reflog. 출력은 최근 HEAD 이동의 번호 매겨진 리스트. HEAD@{0} 이 현재, HEAD@{1} 이 한 단계 전. 잃은 commit 같은 entry 찾아 anchor: git switch -c rescue HEAD@{3} 또는 git reset --hard HEAD@{3}. 위기 해소.
Reflog 는 ref 마다 개별 log 가 있어, HEAD 만 아니라. git reflog show feature/x 가 그 branch 의 이동 추적. git reflog --date=relative 는 'X시간 전' 같은 시간 표시. 90일 default 는 설정 가능하지만 보통 OK — entry 가 떨어지면 기본 commit 이 GC 대상 되고 복구 불가능해질 수 있어.
git clean 은 untracked 파일 삭제. Default 는 아무것도 안 함, -n (dry run) 또는 -f (force) 줘야 해. 디렉토리용 -d + ignored 지만 디스크에 있는 파일용 -x 와 결합하면 working tree 를 git ls-files 에 맞는 상태로 일소 가능. 항상 먼저 git clean -ndx 로 뭐가 지워질지 확인. git clean -fdx 는 dry-run 출력 읽고 정말 원할 때만 — Git 이 추적 안 한 파일은 복구 없음.