스테이지에 올렸던 파일을 내리거나 커밋을 취소는 등 각 단계로 돌아가는 방법
$ git checkout -- 파일이름
checkout으로 되돌린 내용은 다시 복구할 수 없다.
$ git reset HEAD 파일이름
HEAD 다음에 파일 이름을 지정하지 않으면 스테이지에 있는 모든 파일을 되돌린다.
HEAD^ : 현재 HEAD가 가리키는 브랜치의 최신 커밋을 가리킨다.
이렇게 되돌리면 취소한 파일은 작업 트리에만 남게되고 커밋도 취소되고 스테이지에서도 내려진다.
$ git reset HEAD^
reset 명령어 옵션
soft HEAD^ : 최신 커밋을 하기 전 상태로 작업 트리를 되돌린다
mixed HEAD^ : 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 퇴돌린다
디폴트 옵션
hard HEAD^ : 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로
작업 트리를 되돌린다. 되돌린 내용은 복구할 수 없다
특정 버전으로 되돌린 다음 그 이후 버전을 삭제할 수도 있다.
예를들어, reset A를 입력하면 A 커밋을 리셋하는 것이 아니라 최근 커밋을 A로 리셋한다. 즉 A 커밋을 삭제하는 것이 아니라 A 커밋 이후에 만들었던 커밋을 삭제하고, A커밋으로 이동하겠다는 의미이다.
git reset 커밋 해시
git log 를 통해 되돌리고 싶은 커밋 해시를 확인한다.
git reset 커밋해시 명령어에 이상이 없다면
HEAD is now at ~ 라는 문장이 뜬다.
git revert 커밋 해시
revert 명령어 실행 시 커밋 메시지를 입력할 수 있는 창이 뜬다.
메시지를 입력하지 않으면 커밋할 수 없다.
📢 게시물은 DO it! 깃&깃허브 입문을 참고했습니다.