계속되는 개발로 눈이 침침해진 나는 올리지 말아야 할 파일을 커밋해 푸쉬해버렸다. 두근대는 심장을 가라앉히고 git push를 취소해보자.
git에 push된 commit을 복구시킬 수 있는 방법은 두가지가 있다.
reset: 되돌리고 싶은 시점의 commit이력으로 돌아가는 것(시간여행)
revert: 현재까지 남긴 이력들을 유지한 채 되돌리고 싶은 commit을 원상복귀시키는 것(복구commit이 추가됨)
필자는 혼자 작업하던 레포지토리였기 때문에 reset
을 사용했다. 여럿이서 작업하는 공간에는 revert
를 사용하자.
git log --oneline
HEAD
가 있는 커밋이 현재 브랜치를 가리키는 포인터이자 가장 최근의 커밋을 가리킨다.
복구시키고 싶은 커밋의 id를 복사해놓고 git reset
을 실행하자.
git reset --hard "commit ID"
--hard
옵션을 사용하면 복구시키려는 커밋 이후의 모든 내용은 지워버린다.
다시 커밋 로그를 조회하면 해당 커밋 위의 커밋들은 사라져있다.
git push -f origin <branch>
깃허브 커밋 이력을 확인하면 깔끔하게 지워졌다.
-f
옵션은 함부로 사용하면 안된다. 커밋과 푸시는 항상 신중하게 하도록 하자.