회사에서 코드를 git에다가 올렸는데 QA를 진행하지 않고 dev서버에 올려서 커밋을 삭제하는 상황이 생겼었다. 실서버에 올라간 건 아니지만 추후에 merge 했을 때 문제가 생길 수 있기 때문에 커밋을 삭제해야 하다. (깃에 올릴 때는 신중하게 올리자...) 나중에 보기 위해서 정리해보았다. 이 방법은 팀원들 중에 한 번도 git pull을 가져가지 않은 상태여야 한다. 선택지는 git revert과 git reset이 있다. revert는 삭제커밋을 남긴다는 점이 있고 reset은 커밋을 삭제할 때 사용된다. 여기선 굳이 커밋 삭제 기록을 남기지 않아도 되기 때문에 git reset을 해보겠다.
git log
로그를 확인해서 되돌아가고싶은 커밋의 해쉬를 복사해놓는다.
reset에서 옵션으로 많이 사용하는 것이 --hard, --mixed(default), --soft이다. hard를 사용하게 되면 영역 모두 초기화되고 번경 이력과 내용을 전부 삭제한다. mixed는 되돌아가고 싶은 커밋으로 돌아가서 추가한 코드를 빼고 다음 커밋할 상태로 들어간다. soft는 최근 작업내용을 그대로 다른 브런치를 만들고 싶을 때 사용한다. 상황에 맞게 사용하면 된다. 필자는 기존 커밋을 삭제하고 아무도 git pull을 하지 않았을 때이기에 --hard를 사용했다.
git reset --hard (되돌아가고싶은 commit의 hash)
위 코드를 사용하게 되면, 되돌아가고싶은 commit으로 돌아간다. 이렇게 하면 내 폴더 안에서는 reset이 된다. 하지만, git 저장소까지 올라간 상태라면 여기서
git push -f
를 하면 강제로 푸쉬하게된다. -f,--force는 강제로 푸시하는 옵션이다.
'혼자 공부하는 것들' 카테고리의 다른 글
[Git] rebase와 merge의 차이점 (0) | 2021.08.28 |
---|---|
Git-flow를 사용해보자! (2) | 2021.05.20 |
kakao vision api 적용해보기 [python] (0) | 2021.01.24 |
chromedriver 프로세스 한번에 끄기 (0) | 2021.01.06 |
[django] 모델 수정하는 방법 (0) | 2020.12.17 |
댓글