commit을 되돌려야 하는 상황이 생길 수 있다.
commit메세지에 오타가 있을때, 이전 커밋에 추가하고 싶은 내용이 생겼을때 등
또는 remote에 오류난 채로 push했다거나 전에 올린 내용을 삭제하고 싶을때?!
reset과 revert 둘다 커밋을 이전 시점으로 돌려줄 수 있지만
완전히 같은 일을 한다고 보기 어렵다.
그래서 이번에는 두가지를 비교하며 명령어를 정리해보도록 하겠다🙂
HEAD(특정 커밋)를 이동하여 파일 상태를 그 특정 HEAD시점으로 되돌린다
옵션으로 --soft
, --mixed
←[ defalut ] , --hard
를 사용해 인덱스와 수정파일 상태도 지정해서 되돌릴 수 있다.
HEAD를 옮겨 HEAD의 시점으로 돌아가기
git reset HEAD
ex ) git reset HEAD^ ← 바로 이전 시점으로 커밋 되돌리기
commit해쉬를 이용해 돌아가기
git reset {commitHASH}
ex ) git reset 0395e6 ← '0395e6' commit의 시점으로 되돌리기
reset option
--soft
index와 workingtree 둘다 변하지 않고 HEAD만 이동
--mixed
index가 변경되고 HEAD가 이동한다.
--hard
index와 workingtree 둘다 변하고 HEAD도 이동
➚ 참고 index(add된 상태) workingtree(작업하는폴더) HEAD(가장 최근 commit에 위치함)
add된 파일 모두 취소하기
git reset
add했던 파일(stage된 상태) 모두 다 add가 취소된(unstage상태)로 변경
특정 파일만 add 취소하기
git reset {파일이름 또는 경로}
경로 입력하면 해당 경로에 있는 파일의 add를 취소
remote에 push한 commit 되돌리기
commit을 안전하게 삭제, reset과 달리 뒤로 돌아가는것이 아니라
돌리고싶었던 뒤에있던 커밋을 앞으로 가져와 새로 생성한다.
commit해쉬를 이용해 이전 시점으로 돌아가기
git revert {commitHASH}