Git 커밋 되돌리기 (Reset, Revert)
Git을 사용하여 작업하다 보면 이미 커밋한 내용을 되돌리고 싶은 경우가 종종 생기곤 합니다. Git에서 이력을 되돌리기 위해서 사용하는 것 중에서 대표적인 것 2개가 바로 Reset과 Revert인데요. 둘 다 과거로 되돌린다는 의미라 언뜻 보기엔 비슷해 보이는데 과연 차이점은 무엇일까요?
Reset과 Revert의 차이점
Reset
: 과거 커밋으로 되돌린다. (이력 남기지 않음)Revert
: 과거로 돌아간다. (이력 남김)
쉽게 말해서 Reset
은 시계를 다시 맞추듯이 이력을 그 당시로 되돌리는 것이고, Revert
는 이전 커밋 내역을 남겨둔 채 새로운 커밋으로 과거로 돌아가게 되는 것을 의미하는 것입니다.
사용법
Reset
1
$ git reset <옵션> <돌아가고 싶은 커밋>
옵션
- hard
돌아가고자 하는 이력 이후의 모든 내용을 지웁니다. (working directory에서 삭제)
- soft
이력을 되돌린 후, 이후의 내용을 지우지 않고 다시 커밋할 수 있는 상태로 남겨놓습니다. (staging area로 돌려놓기 - commit 전 상태로)
- mixed (default)
변경된 내용은 남아있지만 인덱스가 초기화 되기 때문에 커밋을 하려면 다시 추가해야합니다. (working directory로 돌려놓기 - add 전 상태로)
- HEAD~취소할 커밋 수
현재로부터 원하는 만큼의 커밋을 취소할 수 있습니다.
- HEAD^
가장 최근 커밋이 취소됩니다. (default: mixed)
Revert
1
$ git revert <되돌릴 커밋>
Revert 사용 시 되돌릴 커밋의 [commit ID]를 적어주면 됩니다.
언제 무엇을 사용하면 좋을까?
Reset
같은 경우는 커밋 히스토리를 깔끔하게 정리할 수 있다는 장점이 있기 때문에 혼자 작업하는 경우에 쓰기 좋고, Revert
는 왜 돌아갔는지에 대한 기록이 가능하기 때문에 협업할 때 사용하기 좀 더 좋을 수 있습니다.
🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)
댓글남기기