1 분 소요

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 는 왜 돌아갔는지에 대한 기록이 가능하기 때문에 협업할 때 사용하기 좀 더 좋을 수 있습니다.

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기