🔥 git revert
git revert
명령어는 이전에 커밋한 내용을 되돌리는 명령이에요. 이 명령어를 사용하면 이전 커밋을 취소하는 새로운 커밋을 생성하게 됩니다. 예제를 통해 같이 알아 봅시다.
특정 커밋 되돌리기
현재 git 저장소에 git log
로 커밋 로그를 확인합니다.
$ git log --oneline 1ba1d9b (HEAD -> feature/signup, tag: v1.2, tag: v1.0.0, tag: v1.0) Update README.md 2fa353f Delete README.md caf90de (tag: v0.9, feature/login) Update README 070ebac Initial commit 713d307 Update hello.txt 160ea51 Add message 9c5b645 Add hello.txt fe5b5e0 update README.md 103d6c8 (origin/develop) Initial commit
text
여기서 070ebac
커밋을 되돌리고 싶다면, 다음과 같이 git revert
명령어를 사용하면 됩니다:
$ git revert 070ebac
shell
이 명령어를 실행하면 편집기가 열리고, 커밋 메시지를 입력할 수 있어요.
편집기에는 Revert "Initial commit"
이라는 메시지가 설정되어 있을 거예요. 이 메시지를 그대로 사용하거나 원하는 메시지로 수정한 후 저장하고 편집기를 종료하세요. 그러면 아래와 같이 새로운 커밋이 만들어 집니다.
$ git revert 070ebac [feature/signup 8a6f402] Revert "Initial commit" 2 files changed, 4 insertions(+), 2 deletions(-)
text
이제 git log
명령어로 커밋 내역을 확인해 보면 다음과 같이 나타납니다:
$ git log --oneline 8a6f402 (HEAD -> feature/signup) Revert "Initial commit" 1ba1d9b (tag: v1.2, tag: v1.0.0, tag: v1.0) Update README.md 2fa353f Delete README.md caf90de (tag: v0.9, feature/login) Update README 070ebac Initial commit 713d307 Update hello.txt 160ea51 Add message 9c5b645 Add hello.txt fe5b5e0 update README.md 103d6c8 (origin/develop) Initial commit
text
070ebac
커밋을 되돌리는 새로운 커밋 8a6f402
가 생성된 것을 확인할 수 있죠? 이렇게 git revert
명령어를 사용하면 이전 커밋을 간단히 되돌릴 수 있습니다.
git revert vs git reset
git revert
와 비슷한 명령어로 git reset
이 있는데요, 이 둘의 차이점을 알아두는 것이 중요해요.
git revert
는 이전 커밋을 취소하는 새로운 커밋을 생성하는 반면,git reset
은 브랜치 포인터를 이전 커밋으로 이동시켜요.git revert
는 커밋 히스토리를 유지하면서 변경 내용을 되돌리지만,git reset
은 커밋 히스토리 자체를 변경하죠.
따라서 이미 원격 저장소에 푸시된 커밋을 되돌려야 한다면 git revert
를 사용하는 것이 안전합니다. 반면 로컬 저장소에서만 작업 중이라면 git reset
을 사용해도 무방하죠.
이렇게 git revert
명령어를 사용하면 이전 커밋을 쉽고 안전하게 되돌릴 수 있습니다. 실수로 잘못된 커밋을 했을 때 유용하게 활용할 수 있는 명령어니까 꼭 기억해 두세요!