restore 는 파일용 정밀 undo
수년간 Git 에서 '파일 undo' 는 git checkout -- file 이었어, 이건 branch switch 와 overload 돼 입문자를 끊임없이 헷갈리게 했어. Git 2.23 이 git restore 도입 — 세 영역 사이 파일 내용 이동만 하는 명령. 한 번 쓰기 시작하면 옛 file 용 checkout 호출이 사고 대기 중인 것처럼 느껴져.
Undo 세 가지가 거의 모든 걸 커버. Stage 안 한 편집 버리기: git restore file.js 가 working tree version 을 index version 으로 덮어써 — local 편집 폐기. Unstage: git restore --staged file.js 가 index entry 를 HEAD version 으로 덮어써 — 다음 commit 에서 빼되 working tree 편집 유지. 둘 다 한 번에: git restore --staged --worktree file.js 가 양쪽 layer 를 HEAD 로 rewind — 이 파일의 최근 작업 완전 제거.
선택적 --source flag 로 다른 commit 에서 복원 가능 — git restore --source=HEAD~3 -- file.js 는 3 commit 전 file.js version 을 working tree 로 (선택적으로 index 까지). 이게 '지난주 모습으로' 한 파일만 되돌리고 나머지 프로젝트는 안 건드리는 방법.
Restore 를 조용한 undo 로 다뤄. branch pointer 안 옮기고, history 안 rewrite 하고, 다른 파일 영향 0. 폭발 반경 = 명시한 path 그대로. 자유롭게 쓰기 안전 — 한 파일 실수에 종종 잘못된 선택인 git reset --hard 보다 훨씬 안전.