🔥 git revert

339자
4분

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

이 명령어를 실행하면 편집기가 열리고, 커밋 메시지를 입력할 수 있어요.

lecture image

편집기에는 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 명령어를 사용하면 이전 커밋을 쉽고 안전하게 되돌릴 수 있습니다. 실수로 잘못된 커밋을 했을 때 유용하게 활용할 수 있는 명령어니까 꼭 기억해 두세요!