$ cd /blog

git 실수 되돌리기: reset·revert·restore 완벽 정리

잘못 커밋하거나 파일을 날렸을 때 쓰는 git reset, revert, restore의 차이를 상황별로 정리했습니다. 언제 무엇을 써야 하는지 한 번에 이해할 수 있습니다.


안녕하세요. Jay입니다!

git 쓰다가 "앗, 방금 그거 되돌리고 싶다…" 싶었던 순간, 개발하시는 분들은 다들 겪어보셨죠? 그런데 reset, revert, restore가 헷갈려서 잘못 건드렸다가 더 꼬여본 적도 있으실 거예요. (저도 신입 때 reset --hard로 한참 작업한 거 날린 적 있습니다 😂)

오늘은 상황별로 무엇을 써야 하는지, 한 번에 정리해 보겠습니다.

📌 상황별 한눈 정리

상황 명령어
아직 커밋 안 한 파일 수정 취소 git restore <파일>
staging(add) 취소 git restore --staged <파일>
직전 커밋 메시지/내용 수정 git commit --amend
로컬 커밋 자체를 무르기 git reset
이미 push한 커밋 되돌리기 git revert

1. 아직 커밋 전이라면 — restore

작업하다 망친 파일을 마지막 커밋 상태로 되돌립니다.

git restore src/app.js            # 수정 취소
git restore --staged src/app.js   # add만 취소 (수정은 유지)

2. 로컬 커밋을 무르고 싶다면 — reset

아직 push하지 않은 커밋에만 쓰세요.

git reset --soft HEAD~1   # 커밋만 취소, 변경사항은 staged로 유지
git reset --mixed HEAD~1  # 커밋·add 취소, 수정 내용은 남김 (기본값)
git reset --hard HEAD~1   # 커밋과 변경사항까지 전부 삭제 (주의!)

--hard는 되돌릴 수 없으니 정말 필요할 때만 쓰시는 걸 추천드려요.

3. 이미 push했다면 — revert

원격에 올라간 커밋을 reset으로 지우면 협업자와 히스토리가 충돌합니다. 대신 그 커밋을 취소하는 새 커밋을 만드는 revert를 쓰세요.

git revert <커밋해시>

히스토리를 지우지 않고 "되돌림"을 기록으로 남기니까 훨씬 안전합니다.

결론

기억할 기준은 딱 한 줄인 것 같습니다.

공유 전(로컬)은 reset으로 깔끔히, 공유 후(push)는 revert로 안전하게.

이것만 기억해도 대부분의 실수는 당황하지 않고 수습할 수 있어요. 여러분의 소중한 코드, 안전하게 지키시길 바랍니다! 다음에도 유익한 포스팅으로 찾아오겠습니다. 감사합니다!

#git#개발#버전관리#트러블슈팅

더 많은 IT·AI 활용법이 궁금하다면?

매주 새로운 실전 가이드가 업데이트됩니다.

전체 글 보기