reset vs revert

J·2025년 6월 24일

요약

  1. reset은 타임머신 타고 돌아가는 것이다.
  2. revert는 실행취소다.

reset: 이전으로 타임머신 타고 감

커밋 상황: A->B->C->D->E(HEAD)
git reset --hard B : A->B(HEAD)
1. reset을 하면 reset 목적지 이후의 commit은 모두 소실됨

revert: 실행 취소

커밋 상황: A->B->C->D->E(HEAD)
git revert B : A->B->C->D->E->F(HEAD)
1. F에서는 B에서 한 일들이 실행 취소됨
- B에서 과일사과에서 바나나로 바꿨다면
- revert 이후에는 과일이 다시 사과로 되돌아 가 있음 (실행취소)
- 그러나 C, D, E에서의 변경사항은 그대로 유지됨

safe roll back: revert multiple times

커밋 상황: A->B->C->D->E(HEAD)
reset처럼 완전 이전 상황으로 돌아가되, reset 목적지 이후의 commit도 유지하고 싶으면 revert를 연속적으로 사용하면 된다.
git revert B..HEAD : B 이후부터 HEAD까지, 즉 C, D, E를 revert(실행취소)

  • B commit 이후의 상태가 됨

git revert B^..HEAD : B^ (B의 직전 부모, 이전 커밋) 이후부터 revert, B, C, D, E를 revert

  • A commit 이후의 상태가 됨, B부터 싹 다 실행취소 함

0개의 댓글