reset
과 revert
가 있다.reset
: 되돌리고 싶은 시점의 commit 이력으로 돌아가는 것.(로그에서 삭제됨)
revert
: 현재까지 남긴 이력들을 유지한 채, 되돌리고 싶은 commit 을 원상 복구 시키는 것.(복구 commit 이 추가됨)
협업 프로젝트의 경우, 다른 사람이 그사이에 pull 을 했을 수도 있기 때문에 되돌리기를 했을 때 문제가 생길 수 있다.
1. 로그 조회
git log --oneline
2. 돌아가고 싶은 commit 이후의 commit 삭제
git reset --hard '해당 commit'
reset 에는 3가지 옵션이 있다.
--hard : 돌아간 커밋 이후의 변경 이력을 전부 삭제.
--mixed : 변경 이력은 전부 삭제하지만 변경된 내용은 남아있음. unstage 상태이므로 add 필요.
--soft : mixed 와 동일하지만, stage 에 올라간 상태이므로 바로 commit 가능.
3. Push
git push -f origin 해당 브랜치
그냥 push 가 안될 경우, 권장사항은 아니나 force 를 이용해 강제로 push 한다.