얄코의 제대로 파는 Git & GitHub 강의를 들으며 평소 git을 쓰면서 많이 헷갈린 부분을 정리한다.
git reset --hard [커밋 해쉬]
HEAD의 포인터를 커밋 해쉬 위치로 변경한다
=> 커밋 해쉬 이후 커밋들을 삭제한다.
예를 들면 delta-branch에서 아래 명령어를 치면
git reset -hard [main 2nd commit hash]
이렇게 HEAD는 2nd커밋으로 바뀌고 그 이후 커밋들도 히스토리에서 사라진다.
reset의 다른 옵션으로는 soft와 디폴트인 mixed가 있다.
-soft: repository에서 staging area로 이동
--mixed (default): repository에서 working directory로 이동
--hard: 수정사항 완전히 삭제
추가로 reset도 내역이 남기 때문에 git reflog
명령어로 해쉬를 찾아 다시 reset으로 취소할 수 있다.
git revert [커밋 해쉬]
커밋 해쉬의 내용(상태)으로 되돌린다.
=>커밋의 내용을 되돌리는 커밋을 새로 만든다.
git revert [main 2nd commit hash]
명령어를 쳐도 깃 히스토리는 삭제되지 않지만 파일 상태는 2nd commit때로 바뀐다.
git checkout HEAD ~
git checkout HEAD ^
^ 또는 ~ 갯수만큼 이전으로 이동
=> 히스토리 내역은 바꾸지 않고 파일 상태만 변화.