개발 환경 및 프로젝트 관리/Git 사용법

원격 저장소에 Push된 커밋을 되돌릴 때 Reset 대신 Revert를 사용하는 이유

Data Jun 2026. 3. 1. 22:00

Git에서 커밋을 되돌리는 방법은 크게 두 가지입니다.

  • git reset
  • git revert

겉보기에는 비슷해 보이지만, 히스토리 처리 방식이 완전히 다릅니다.

 

1. git reset: 과거로 되돌리기

git reset --hard HEAD~1

이 명령은

  • 브랜치 포인터를 이전 커밋으로 이동
  • 이후 커밋 기록 삭제

즉, 히스토리를 재작성합니다.

 

로컬에서만 작업했다면 문제 없습니다.
하지만 이미 원격 저장소에 push된 상태라면 문제가 됩니다.

 

왜냐하면 원격에는 “삭제된 커밋”이 여전히 존재하기 때문입니다.

 

이 상태에서 push하려면:

git push --force

강제 푸시가 필요합니다.
협업 환경에서는 매우 위험합니다.

 

2. git revert: 되돌리는 커밋 생성

git revert HEAD

이 명령은

  • 기존 커밋을 삭제하지 않음
  • 해당 변경을 “취소하는 새로운 커밋”을 생성

히스토리를 보존한 채 되돌립니다.

 

즉,

 

기존 커밋 → 남아 있음
되돌린 커밋 → 추가됨

 

그래서 단순 push만 하면 됩니다.

git push

 

3. 언제 revert를 써야 하는가

이미 원격 저장소에 push된 잘못된 커밋을 되돌릴 때는
reset이 아니라 revert를 사용하는 것이 안전합니다.

 

이유는 간단합니다.

 

이미 원격 저장소에 push된 순간,
그 커밋은 팀 전체의 기준 이력이 됩니다.

 

이 상태에서 reset을 사용하면
브랜치 포인터가 과거로 이동하면서 기존 커밋 체인이 바뀌고,
원격 저장소의 이력과 달라지게 됩니다.

 

커밋은 내용 기반 해시로 연결된 구조이기 때문에
중간을 바꾸면 이후 커밋들도 모두 다른 이력이 됩니다.

 

반면 revert는 기존 이력을 건드리지 않고
그 변경을 취소하는 새로운 커밋을 추가합니다.

 

즉, 이력을 깨뜨리지 않고 문제를 해결할 수 있기 때문에 안전합니다.

 

4. 정리 

 

  • 로컬에서만 수정 → reset 가능
  • 이미 원격에 공유됨 → revert 사용

원격 저장소에 이미 공유된 커밋을 되돌릴 때는 히스토리를 재작성하는 reset 대신, 되돌리는 커밋을 생성하는 revert를 사용하는 것이 안전합니다.