먼저 로컬에서 $ git reset
명령어를 이용해 내가 되돌리고 싶은 커밋들을 되돌린다.
$ git reset --hard HEAD~1
HEAD~1은 가장 최근 커밋내역, HEAD~2는 가장 최근에서 두번째 커밋
그리고 난 후, $ git push
를 실행하면
$ git push origin master
아래와 같은 에러 문구가 나타날 것이다.
로컬 저장소의 커밋 히스토리가 원격 저장소의 커밋 히스토리보다 뒤쳐져 있는데 푸시를 하였으므로 발생하는 에러이다. 하지만 지금 우리가 원하는 것은 이 뒤쳐져 있는 로컬 저장소의 커밋 히스토리를 원격 저장소의 커밋 히스토리로 강제로 덮어쓰는 것이므로 이를 위한 옵션 -f 또는 --force 를 명령어에 추가하여야 한다.
$ git push -f origin master
GitHub 페이지를 통해 원격 저장소에서의 커밋이 되돌려졌음을 확인할 수 있다.
이 방법은 다른 팀원이 내가 되돌린 커밋들을 pull로 땡겨가지 않았다고 확신할 수 있는 경우,
예를 들어,
이러한 경우에는 안전하고 간편하게 사용할 수 있는 방법이다.