git restore
한 줄 요약
파일의 변경사항을 되돌리거나 Stage에서 내리기
선행 지식
- Stage와 Working Directory - Git의 세 영역
- git add - Stage에 올리는 방법
개요
git restore는 Git 2.23에서 도입된 명령어로, git checkout의 파일 복원 기능을 분리한 것입니다. 더 명확하고 안전합니다.
기본 사용법
# Working Directory 변경 취소
git restore <파일명>
# Stage에서 내리기
git restore --staged <파일명>주요 옵션
| 옵션 | 설명 | 예시 |
|---|---|---|
| (없음) | 파일 변경 취소 | git restore app.js |
--staged / -S | Stage에서 내리기 | git restore --staged app.js |
--source | 특정 커밋에서 복원 | git restore --source HEAD~1 app.js |
--worktree / -W | Working Directory만 | git restore -W app.js |
두 가지 용도
1. Working Directory 변경 취소
수정한 파일을 마지막 커밋 상태로 되돌립니다.
# 파일 수정
echo "잘못된 코드" >> app.js
# 변경 취소 (마지막 커밋 상태로)
git restore app.js주의
변경사항이 완전히 사라집니다! 복구할 수 없습니다.
2. Stage에서 내리기
git add로 올린 파일을 다시 내립니다 (변경사항은 유지).
# 실수로 모든 파일을 add
git add .
# 특정 파일만 Stage에서 내리기
git restore --staged secret.env
# 모든 파일 Stage에서 내리기
git restore --staged .실제 예제
파일 변경 취소
# 현재 상태 확인
$ git status
Changes not staged for commit:
modified: app.js
# 변경 취소
$ git restore app.js
# 확인
$ git status
nothing to commit, working tree cleanStage에서 내리기
# add 후 상태
$ git status
Changes to be committed:
modified: app.js
modified: secret.env ← 이건 커밋하면 안 됨!
# secret.env만 Stage에서 내리기
$ git restore --staged secret.env
# 확인
$ git status
Changes to be committed:
modified: app.js
Changes not staged for commit:
modified: secret.env ← 변경은 유지, Stage에서만 내려감특정 커밋에서 복원
# 2단계 이전 커밋의 app.js 가져오기
git restore --source HEAD~2 app.js
# 특정 커밋 해시에서 복원
git restore --source a1b2c3d app.js모든 파일 복원
# 모든 변경 취소 (⚠️ 주의!)
git restore .
# 모든 파일 Stage에서 내리기
git restore --staged .restore vs checkout
| restore (권장) | checkout (기존) |
|---|---|
git restore app.js | git checkout -- app.js |
git restore --staged app.js | git reset HEAD app.js |
restore가 더 명확합니다:
restore: 파일 복원 전용checkout: 브랜치 전환 + 파일 복원 (혼란스러움)
자주 하는 실수
삭제된 파일 복원
# 파일 삭제
rm app.js
# 복원
git restore app.jsrestore와 reset 혼동
| 명령어 | 용도 |
|---|---|
git restore --staged | Stage에서 내리기 (커밋 영향 X) |
git reset | 커밋 히스토리 조작 |
→ git reset 참고
되돌릴 수 없는 변경
git restore app.js로 취소한 변경은 복구할 수 없습니다.
예방: 중요한 변경은 먼저 stash
git stash
# 안전하게 보관 후 작업관련 명령어
- git add - Stage에 올리기
- git status - 현재 상태 확인
- git reset - 커밋 되돌리기
- git stash - 임시 저장
더 알아보기
- Stage와 Working Directory - Git의 세 영역
- 이전 버전으로 돌아가기 - 상황별 가이드
- 특정 파일만 되돌리기 - 파일 복원 시나리오