3개의 커밋이 없어진 것을 확인할 수 있다.마지막 커밋에서 hello.txt파일의 데이터는 good boy였다. 하지만 가장 최근부터 3개의 커밋을 취소했기 때문에, 해당 데이터는 수정된 데이터로 추적하고 있다. 고로 작업 트리에서 조차 변경 사항을 남기고 싶지 않다면, reseet 명령의 옵션인 --hard HEAD^를 사용하거나 지금 상태에서는 git restore를 사용하면 된다.
▼ reset 명령의 옵션
명령
설명
--soft HEAD^
최근 커밋을 하기 전 상태로 작업 트리를 되돌립니다.
--mixed HEAD^
최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌립니다. 옵션 없이 git reset 명령을 사용할 경우 이 옵셥을 기본으로 작동합니다.
--hard HEAD^
최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌립니다. 이 옵션으로 되돌린 내용은 복구할 수 없습니다.
특정 커밋으로 되돌리기 git reset 커밋 해시
git reset --hard 커밋 해시
첫번째 커밋으로 되돌아가기 위해, 첫번째 커밋의 커밋 해시를 복사한다.첫번째 커밋으로 돌아가며, --hard 옵셥으로 깃은 unmodified 상태가 되었다.
참고로, 되돌아가려는 커밋A의 커밋 해시를 입력했을때, A 커밋을 삭제하는 것이 아니라 A 커밋 이후에 만들었던 커밋을 삭제하고 A 커밋으로 이동하겠다는 의미로 해석해야 한다.
커밋 삭제하지 않고 되돌리기 git revert 커밋 해시
첫번째 커밋 해시를 복사하여 git revert를 하면, 다음과 같이 hello.txt에는 추가한 b가 없는 것을 확인할 수 있다. revert를 통해 새 커밋을 만들면서 버전에 있던 이력을 취소할 수 있다.