Git
Git Reset 과 Revert
융식
2022. 5. 1. 17:03
HEAD
HEAD는 현재 브랜치를 가리키는 포인터입니다.
reset은 가장 최근의 commit 명령을 되돌립니다.
HEAD를 바로 전의 commit으로 옮기다는 뜻입니다.
현재 가지고 있던 commit 내용은 사라지게 됩니다.
git reset HEAD~
reset 명령 뒤에 HEAD~ (HEAD의 부모)를 주면 Index나 워킹 디렉토리는 그대로 놔두고 브랜치가 가리키는 커밋만 이전으로 되돌립니다.
reset 명령은 정해진 순서대로 세 개의 트리를 덮어써 나가다가 옵션에 따라 지정한 곳에서 멈춥니다.
- HEAD가 가리키는 브랜치를 옮긴다.( 현재 작성했던 커밋은 인덱스로 돌려놓는다. --soft 옵션이 붙으면 여기까지)
- Index를 HEAD가 가리키는 상태로 만든다. (add 하기 전의 상태로 돌려놓는다. --hard 옵션이 붙지 않았으면 여기까지)
- 워킹 디렉토리를 Index의 상태로 만든다. ( 앞의 내용들을 전부 삭제 한다.)
revert 는 reset과 다르게 기록을 완전히 삭제하는게 아닌 전의 커밋으로 돌아갔다는 커밋로그를 만듭니다.
git revert 커밋해쉬
이러면 해당 커밋을 삭제하는 기록도 남기면서 삭제하게 됩니다.
바로 전 단계의 커밋을 삭제하고 싶다면
git revert HEAD
HEAD를 넣어주어 삭제해줍니다.