Git

revert vs reset – 커밋 되돌리기

jonbeo 2026. 1. 3. 11:24
반응형

 

 

Git에서 작업 중 "실수했어요! 이전 상태로 되돌리고 싶어요!" 하는 순간이 꼭 찾아옵니다.
이럴 때 사용하는 대표적인 명령어가 바로 **revert**와 **reset**입니다.

하지만 이 두 명령어는 사용 목적도, 결과도 완전히 다릅니다.
오늘 포스팅에서는 두 명령어의 개념, 차이점, 실제 사용법을 쉽게 정리해드리겠습니다.


✅ 핵심 요약 먼저 보기

구분 git revert git reset
목적 이전 커밋을 무효화하는 새 커밋 생성 커밋 자체를 삭제하거나 이동
안전성 안전 (히스토리 유지) 위험 (히스토리 변경)
협업 시 ✅ 추천 (이력 유지됨) ⚠️ 주의 (공유 브랜치에서 사용 시 충돌 가능)
사용 예 잘못된 코드 무효화 테스트용 커밋 제거, 초기화 등

🔁 1. git revert – 이전 커밋을 무효화

 
git revert [커밋해시]
  • 선택한 커밋의 반대 작업을 새 커밋으로 생성
  • 기존 커밋 히스토리를 보존하면서 롤백할 수 있음

🔹 예제

 
git revert a3c2f91

a3c2f91 커밋이 적용한 내용을 반대로 되돌리는 새로운 커밋이 생성됩니다.

✔️ 협업 중이라면 revert 사용이 안전


🔄 2. git reset – 커밋 자체를 이전 상태로 되돌림

 
git reset --hard [커밋해시]
  • 지정한 커밋으로 히스토리를 통째로 초기화
  • 변경된 커밋 이후의 히스토리는 사라짐 (주의!)

🔹 reset 종류별 차이

명령어 설명
--soft 커밋만 취소 (작업 내용은 유지)
--mixed 커밋 + 스테이징 취소 (기본값)
--hard 커밋 + 스테이징 + 작업파일 모두 삭제 (복구 불가!)

🔹 예제

 
git reset --hard HEAD~1

현재 브랜치의 마지막 커밋을 1개 되돌리고, 작업 내용도 삭제합니다.
협업 브랜치에서는 절대 사용 금지!


📌 실무 상황별 추천

상황 추천 명령어 이유
협업 중 잘못된 커밋 되돌리기 git revert 히스토리 보존 가능
테스트용 커밋 제거 git reset --soft 코드 유지하며 커밋만 제거
전체 초기화 (내 로컬에서만) git reset --hard 개발 초기에 빠른 초기화 가능
실수한 브랜치에서 한 단계 되돌리기 git reset HEAD~1 최근 커밋 취소 가능

⚠️ 협업 브랜치에서는 reset 금지!

reset은 내 로컬에서는 유용하지만,
공동 작업 중인 브랜치(main, develop 등) 에서는 사용하면 다른 사람 히스토리까지 꼬일 수 있습니다.

  • 공유 브랜치에는 revert 사용
  • 로컬 실험 브랜치에서는 reset 사용 가능
반응형