git restore

한 줄 요약

파일의 변경사항을 되돌리거나 Stage에서 내리기

선행 지식

개요

git restore는 Git 2.23에서 도입된 명령어로, git checkout의 파일 복원 기능을 분리한 것입니다. 더 명확하고 안전합니다.

기본 사용법

# Working Directory 변경 취소
git restore <파일>
 
# Stage에서 내리기
git restore --staged <파일>

주요 옵션

옵션설명예시
(없음)파일 변경 취소git restore app.js
--staged / -SStage에서 내리기git restore --staged app.js
--source특정 커밋에서 복원git restore --source HEAD~1 app.js
--worktree / -WWorking 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 clean

Stage에서 내리기

# 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.jsgit checkout -- app.js
git restore --staged app.jsgit reset HEAD app.js

restore가 더 명확합니다:

  • restore: 파일 복원 전용
  • checkout: 브랜치 전환 + 파일 복원 (혼란스러움)

자주 하는 실수

삭제된 파일 복원

# 파일 삭제
rm app.js
 
# 복원
git restore app.js

restore와 reset 혼동

명령어용도
git restore --stagedStage에서 내리기 (커밋 영향 X)
git reset커밋 히스토리 조작

git reset 참고

되돌릴 수 없는 변경

git restore app.js로 취소한 변경은 복구할 수 없습니다.

예방: 중요한 변경은 먼저 stash

git stash
# 안전하게 보관 후 작업

관련 명령어

더 알아보기