(3가지 경우가 있음)
1. wd - 수정된 내용을 이전 상태(버전, commit)
git restore {filename}
이전으로 되돌릴 수 없으니 조심
git이 추적하고 있는 (버전이 기록되고 있는 상태)의 파일만 되돌릴 수 있음
즉, git add
후 modified
인 상태만 가능
2. staging area 에서 wd로 다시 내리기
root-commit이 없는 경우
git rm --cached <file>
" 이 있는 경우
git restore --staged <file>
3. repository 단계
커밋 이후 다시 staging area로
git commit --amend
>i
>커밋메세지 수정 및 저장 가능
git commit --amend
>i
>새로운 파일과 함께 커밋메세지 수정 및 저장 가능
git reset [옵션] <커밋id>
커밋을 통채로 없앨 수 있음
[옵션]
commit1 - c2- c3 -c4(최신상태) / c2로 돌아가고싶다고 가정
기본값
돌아갈 커밋 이후 커밋된 파일을 wd로 되돌린다 (단, 수정사항은 남아있음)
완전히 c2일떄의 상태로 되돌아감 (사용할 때 조심해야함)
옵션 | w.d | s.a | repo |
---|---|---|---|
--soft | ✔ | HEAD가 특정 커밋을 가르킴 | |
--mixed | ✔ | HEAD가 특정 커밋을 가르킴 | |
--hard | HEAD가 특정 커밋을 가르킴 |
1, 2, 3 모두 HISTORY(커밋내역)을 삭제
단,--hard
옵션 사용시 기존의 Untracked 파일은 여전히 Untracked로 남는다.
git revert abcd
<abcd>
라는 커밋을 취소
(reset abcd
: <abcd>
라는 커밋으로)
<abcd>
는 아래와 같이 git log --oneline
하면 나타나는 커밋 번호
git revert abcd efgh ijk
커밋 여러개를 취소하는 것도 가능