🌿 중급 개발도구
Reset과 Revert의 차이
쉽게 이해하기
reset은 일기장에서 페이지를 찢어버리는 것이고, revert는 '어제 쓴 내용은 틀렸습니다'라고 새로 한 줄 추가하는 거예요. 둘 다 내용을 되돌리지만, reset은 흔적을 지우고 revert는 기록을 남깁니다.
핵심 정리
Git에서 변경사항을 되돌리는 두 가지 방법으로, reset은 히스토리를 지우고 revert는 새 커밋을 만듭니다.
자세히 알아보기
reset과 revert는 둘 다 이전 상태로 되돌리는 Git 명령어지만, 동작 방식이 완전히 다릅니다.
`git reset`은 HEAD를 특정 커밋으로 이동시켜서 그 이후의 커밋들을 히스토리에서 제거합니다. `--soft`, `--mixed`, `--hard` 옵션에 따라 변경사항을 어떻게 처리할지 결정할 수 있어요. `--hard`는 완전히 지워버리고, `--soft`는 변경사항을 staging area에 남겨둡니다. reset은 히스토리를 다시 쓰는 작업이라서 이미 push한 커밋에는 사용하면 안 됩니다.
반면 `git revert`는 특정 커밋의 변경사항을 되돌리는 새로운 커밋을 만듭니다. 히스토리를 지우지 않고 '되돌렸다'는 기록을 추가하는 거죠. 이미 공유된 커밋을 되돌려야 할 때는 revert를 사용해야 해요. 다른 사람들의 작업에 영향을 주지 않으니까요.
실무에서는 로컬에서 실수한 커밋을 정리할 때는 reset을, 이미 배포된 버전에서 문제가 생겼을 때는 revert를 사용합니다. 프로덕션에 배포된 코드는 절대 reset하면 안 되고, 항상 revert로 안전하게 되돌려야 해요.