Git히스토리 관리

reset과 revert 차이

과거 상태로 되돌리고 싶을 때 히스토리를 다시 쓰는 reset과 이력을 남기며 되돌리는 revert의 차이를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

text
# 로컬에서 아직 정리 중이면
git reset --soft HEAD~1

# 이미 공유된 커밋을 취소하려면
git revert <commit>

설명

  • reset은 현재 브랜치 포인터를 옮겨 히스토리를 다시 쓰는 성격이 강합니다.
  • revert는 특정 커밋의 반대 변경을 새 커밋으로 추가해 이력을 보존합니다.
  • 아직 혼자 작업 중인 로컬 정리에는 reset이 유용할 수 있습니다.
  • 이미 공유된 브랜치에서 안전하게 취소하려면 보통 revert가 더 적절합니다.

짧은 예제

text
실수로 잘못된 문서를 main에 push 한 경우:

git revert a1b2c3d

결과:
- 과거 커밋은 남음
- 되돌리는 새 커밋이 추가됨

빠른 정리

명령특징
git reset브랜치 포인터를 옮겨 히스토리를 다시 씁니다.
git revert취소용 새 커밋을 만들어 이력을 남깁니다.
로컬 정리reset이 유용할 수 있음
공유된 브랜치 취소revert가 대체로 안전

공식 참고: git-reset, git-revert

주의할 점

이미 다른 사람이 pull 한 브랜치에서 무심코 reset 후 강제 push 하면 협업 이력이 크게 꼬일 수 있습니다. 공유된 브랜치에서는 먼저 revert를 생각하는 편이 안전합니다.