C.W.K.
Stream
Lesson 05 of 05 · published

reflog와 clean: 비상 도구

~22 min · reflog, clean, recovery

Level 0Untracked 새싹
0 XP0/47 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

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 이 추적 안 한 파일은 복구 없음.

Code

Reflog 로 잃은 작업 찾기·bash
# 헷갈린 reset, rebase, branch 삭제 후:
git reflog --date=relative -n 30

# 출력 예:
# abc1234 HEAD@{0} 5 minutes ago: reset: moving to HEAD~3
# def5678 HEAD@{1} 1 hour ago:    commit: feature/x final
# 12345ab HEAD@{2} 2 hours ago:   pull: Fast-forward

# 잃은 tip 을 rescue branch 로 복원:
git switch -c rescue HEAD@{1}
# 또는 현재 branch 되돌리기:
git reset --hard HEAD@{1}

# Branch 별 reflog:
git reflog show feature/x
Clean — 항상 dry-run 먼저·bash
# DRY RUN — 뭐가 삭제될지 list:
git clean -nd                  # untracked 파일 + 디렉토리
git clean -ndx                 # ignored 파일 (build 산출물) 까지 포함

# 실제 삭제 (dry run 검토 후):
git clean -fd                  # untracked 파일 + 디렉토리 삭제
git clean -fdx                 # ignored 파일도 삭제

# Interactive — 뭐 삭제할지 선택:
git clean -i

# 위험 — build output, .env, Git 이 추적 안 한 모든 거
# 날아갈 수 있어. Git 쪽 undo 없음.

External links

Exercise

복구 가능한 재앙 만들기: commit 하나 하고 git reset --hard HEAD~1 으로 버림. git reflog 돌리고, 잃은 commit 식별, git switch -c rescue HEAD@{1} 으로 새 branch 에 복원. git log 로 확인. 별도로, build 산출물 있는 repo 에서 git clean -ndx 돌리고 list 읽어. 이 repo 에 파괴 형태 실제로 돌릴지 결정 + 이유 적기.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.