Git

Git Reset 과 Revert

융식 2022. 5. 1. 17:03

HEAD

HEAD는 현재 브랜치를 가리키는 포인터입니다.

 

reset은 가장 최근의 commit 명령을 되돌립니다. 

 

HEAD를 바로 전의 commit으로 옮기다는 뜻입니다.

 

현재 가지고 있던 commit 내용은 사라지게 됩니다.

 

git reset HEAD~

 

reset 명령 뒤에 HEAD~ (HEAD의 부모)를 주면 Index나 워킹 디렉토리는 그대로 놔두고 브랜치가 가리키는 커밋만 이전으로 되돌립니다.

reset 명령은 정해진 순서대로 세 개의 트리를 덮어써 나가다가 옵션에 따라 지정한 곳에서 멈춥니다.

  1. HEAD가 가리키는 브랜치를 옮긴다.( 현재 작성했던 커밋은 인덱스로 돌려놓는다. --soft 옵션이 붙으면 여기까지)
  2. Index를 HEAD가 가리키는 상태로 만든다. (add 하기 전의 상태로 돌려놓는다. --hard 옵션이 붙지 않았으면 여기까지)
  3. 워킹 디렉토리를 Index의 상태로 만든다. ( 앞의 내용들을 전부 삭제 한다.)

revert 는 reset과 다르게 기록을 완전히 삭제하는게 아닌 전의 커밋으로 돌아갔다는 커밋로그를 만듭니다. 

 

git revert 커밋해쉬

이러면 해당 커밋을 삭제하는 기록도 남기면서 삭제하게 됩니다.

 

바로 전 단계의 커밋을 삭제하고 싶다면

 

git revert HEAD

 

HEAD를 넣어주어 삭제해줍니다.