우리는 한다, 개발을.

git 커밋 잘못했을 때

⌛ 1 min

Git Revert (vs Git Reset)

깃 커밋을 잘못하는 경우가 종종 있습니다.

급한 마음에 또는 깜빡하고 최신 깃 기록을 내려받지 않고 바로 커밋을 하는 경우가 있죠.

그래서 오늘은 git revert 및 git reset 을 통해 기존 커밋의 내용을 취소하거나 되돌리는 방법에 대해서 알아보겠습니다.

특징 git revert git reset
기능 특정 커밋의 변경 사항을 되돌리고 새로운 커밋을 생성 특정 커밋을 기준으로 브랜치를 이전 상태로 이동
히스토리 보존 보존 보존 안됨
협업 시 사용 안전하게 사용 가능. 히스토리가 보존되므로 팀원이 영향을 받지 않음 조심해야 함. 원격 저장소와 동기화된 상태에서 사용하면 충돌이 발생할 가능성이 큼
원격 저장소 동기화 원격 저장소와의 동기화를 깨지지 않게 함 원격 저장소에서 제거된 히스토리로 인해 문제가 발생할 수 있음
작동 방식 되돌리려는 커밋의 변경 사항을 반대로 적용하여 새 커밋으로 기록 브랜치를 특정 커밋으로 재설정하거나 히스토리를 삭제
사용 사례 원격 저장소에 푸시된 커밋을 되돌려야 하는 경우 로컬에서만 작업 중이며, 히스토리를 수정하거나 초기화할 때 사용

그림

- git revert

#### Initial: A — B — C — D (HEAD)

#### Revert D: A — B — C — D — Revert D (HEAD)

커밋 내용:
- A: 파일 file.txt 생성, 내용: Hello.
- B: file.txt에 World 추가.
- C: file.txt에 ! 추가.
- D: file.txt에 Oops 추가.

A: file.txt = Hello

B: file.txt = Hello World

C: file.txt = Hello World!

D: file.txt = Hello World! fail

Revert D: file.txt = Hello World!

- git reset

#### Initial: A — B — C — D (HEAD)

#### Reset to C: A — B — C (HEAD)

* revert 는 잘못 커밋한 부분을 reset 은 잘못 커밋한 그 이전을 선택해야 합니다.