git 수정된 변경 내용 폐기
수정된 모든 파일의 변경 내용을 폐기
commit 하거나 git add 하지 않은 파일의 수정사항을 마지막 커밋 상태로 되돌립니다.
git restore .
이 명령어는 현재 디렉토리(.) 기준 모든 수정된 파일의 변경내용을 폐기합니다.
git 2.23 버전부터 권장합니다.
그 아래의 버전에는 checkout 명령어를 사용해도 동일하게 동작합니다.
git checkout .
Staged된 파일 포함 모든 변경 내용 폐기
git add를 통해서 스테이징 area에 올린 사항까지 모든 로컬 변경 사항을 폐기하고 싶다면 reset 명령을 사용합니다.
이 명령어는 복구가 어려우니 주의하십시오.
git reset --hard
마지막 커밋(HEAD) 상태로 작업 폴더 전체를 강제로 되돌아 갑니다.
새로 추가된 파일(Untracked) 삭제
git이 추적하고 있지 않은 새로 생성한 파일을 삭제 하려면 clean 명령어를 사용합니다.
이 명령어 역시 복구가 불가능합니다.
git clean -n -d
- -n: 실제 삭제는 하지 않고 대상 목록만 보여줍니다.
- -d: 디렉토리도 포함합니다.
실제 삭제할 때는 -f 옵션을 사용합니다.
git clean -f -d
특정 파일 하나만 마지막 커밋 상태로 되돌림
restore 명령어로 경로와 파일이름을 지정해주면 됩니다.
git restore 파일_경로/파일_이름
예를 들어 src/main.js 파일을 폐기하고 싶다면:
git restore src/main.js
git 2.23 이전 버전이라면 역시 checkout 명령어를 이용합니다.
git checkout -- src/main.js
- 기호는 브랜치 이름과 혼동을 피하기 위해 두번 입력해줍니다.
git restore 명령을 사용할 때 파일 경로는 현재 내가 터미널(명령 프롬프트)에서 위치한 디렉토리를 기준으로 계산됩니다.
예를 들어, 다음과 같은 프로젝트 구조가 있다고 가정해 보겠습니다.
my-project/
├── .git/
├── README.md
└── src/
└── main.js
내가 현재 my-project/ 디렉토리에 있고 src/main.js 파일의 변경 사항을 폐기하고 싶다면:
# 현재 위치: /Users/Me/my-project/
# 대상 파일: /Users/Me/my-project/src/main.js
# 현재 위치에서 대상 파일까지의 상대 경로를 적습니다.
git restore src/main.js
내가 src/ 디렉토리로 이동한 상태에서 main.js 파일의 변경 사항을 폐기하고 싶다면:
# 현재 위치: /Users/Me/my-project/src/
# 대상 파일: /Users/Me/my-project/src/main.js
# 현재 위치에 파일이 바로 있으므로 파일 이름만 적습니다.
git restore main.js
만약 src/ 디렉토리에서 상위의 README.md 파일 변경 사항을 폐기하고 싶다면:
# 현재 위치: /Users/Me/my-project/src/
# 대상 파일: /Users/Me/my-project/README.md
# 상위 디렉토리로 나가야 하므로 '..'을 사용합니다.
git restore ../README.md
