Original article: Git Revert Commit – How to Undo the Last Commit
Git에서 코드 작업을 하고 있는데 계획대로 되지 않아서 가장 최근 커밋을 되돌려야 한다고 가정해봅시다. 어쩌면 좋을까요? 방법에 대해 알아봅시다!
마지막 커밋을 취소할 수 있는 두 가지 방법이 있습니다. 이 글에서는 이 두 가지를 모두 살펴보겠습니다.
revert
명령어
revert
명령어는 취소하고 싶은 특정 커밋의 내용을 되돌리는 새로운 커밋을 만듭니다. 이 명령어를 사용하여 다음과 같이 마지막 커밋을 되돌릴 수 있습니다:
git revert <되돌리고 싶은 커밋 이름>
git log
를 사용하여 되돌릴 커밋의 이름을 찾을 수 있습니다. 여기에 설명된 첫 번째 커밋은 마지막으로 생성된 커밋입니다. 그런 다음, 찾아낸 영숫자 이름을 복사하여 revert
명령어에 사용할 수 있습니다.
reset
명령어
reset
명령어를 사용해 마지막 커밋을 실행 취소할 수도 있습니다. 그러나 주의해야할 점은 커밋 기록이 변경되기 때문에 거의 사용하지 않아야 합니다. 작업 지점인 HEAD를 지정된 커밋으로 이동하고, 그 이후의 모든 항목을 폐기합니다:
git reset --soft HEAD~1
--soft
옵션은 커밋되지 않은 변경사항이 손실되지 않음을 의미합니다.
가장 최근 커밋으로 되돌리고 unstaged
상태의 변경 사항을 모두 제거하려면 --hard
옵션을 사용할 수 있습니다:
git reset --hard HEAD~1
이렇게 하면 최신 커밋뿐만 아니라 커밋되지 않은 변경 사항도 취소됩니다.
Git에서 언제 reset
또는 revert
를 사용해야 할까요?
되돌려야 하는 커밋이 로컬에만 존재하는 경우에만 reset
명령어를 사용해야 합니다. 이 명령어는 해당 커밋을 아예 삭제하고 커밋 기록을 변경하기 때문에 같이 협업하고 있는 다른 팀원의 작업에도 영향을 끼치기 때문입니다. (협업하는 프로젝트 브랜치에 reset
을 실행하면 다른 팀원이 새로운 커밋을 push할 때 브랜치에 충돌이 납니다 --옮긴이 주석.)
revert
는 변경 내용을 취소하는 새 커밋을 생성하므로, 되돌리려는 커밋이 이미 원격 저장소로 푸쉬된 경우에는 커밋 기록을 덮어쓰지 않는 revert
명령어를 사용하는 것이 가장 좋습니다.
마치며
마지막 커밋을 취소하는 두 가지 방법과 언제 어떤 방법을 사용하는 것이 가장 좋은지를 배웠습니다.
이제 마지막 커밋이 버그를 유발하거나 커밋하지 말았어야 하는 내용이 있다는 것을 알게 되면 어떻게 고치는지 아시겠죠?