🔥 git revert

339자
4분

git revert 명령어는 이전에 커밋한 내용을 되돌리는 명령이에요. 이 명령어를 사용하면 이전 커밋을 취소하는 새로운 커밋을 생성하게 됩니다. 예제를 통해 같이 알아 봅시다.

특정 커밋 되돌리기

현재 git 저장소에 git log 로 커밋 로그를 확인합니다.

text
$ 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
$ 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

여기서 070ebac 커밋을 되돌리고 싶다면, 다음과 같이 git revert 명령어를 사용하면 됩니다:

shell
$ git revert 070ebac
shell
$ git revert 070ebac

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

lecture image

편집기에는 Revert "Initial commit" 이라는 메시지가 설정되어 있을 거예요. 이 메시지를 그대로 사용하거나 원하는 메시지로 수정한 후 저장하고 편집기를 종료하세요. 그러면 아래와 같이 새로운 커밋이 만들어 집니다.

text
$ git revert 070ebac
[feature/signup 8a6f402] Revert "Initial commit"
 2 files changed, 4 insertions(+), 2 deletions(-)
text
$ git revert 070ebac
[feature/signup 8a6f402] Revert "Initial commit"
 2 files changed, 4 insertions(+), 2 deletions(-)

이제 git log 명령어로 커밋 내역을 확인해 보면 다음과 같이 나타납니다:

text
$ 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
$ 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

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

YouTube 영상

채널 보기
NestJS 역할 기반 접근 권한 부여 - Guard, Reflector | NestJS 가이드
미들웨어 vs 가드, 왜 NestJS에서는 가드가 더 똑똑할까? | NestJS 가이드
함수 객체의 보편적 구성 | 프로그래머를 위한 카테고리 이론
class-validator 와 DTO | NestJS 가이드
함수형 데이터 타입 | 프로그래머를 위한 카테고리 이론
Zod로 스키마 유효성 검사 구현하기 | NestJS 가이드
NestJS 가드, 바이딩과 스코프 | NestJS 가이드
Git Worktree로 여러 피처 동시에 개발하기 | AI 코딩 시대의 필수 스킬