커밋 상황: A->B->C->D->E(HEAD)
git reset --hard B : A->B(HEAD)
1. reset을 하면 reset 목적지 이후의 commit은 모두 소실됨
커밋 상황: A->B->C->D->E(HEAD)
git revert B : A->B->C->D->E->F(HEAD)
1. F에서는 B에서 한 일들이 실행 취소됨
- B에서 과일을 사과에서 바나나로 바꿨다면
- revert 이후에는 과일이 다시 사과로 되돌아 가 있음 (실행취소)
- 그러나 C, D, E에서의 변경사항은 그대로 유지됨
커밋 상황: A->B->C->D->E(HEAD)
reset처럼 완전 이전 상황으로 돌아가되, reset 목적지 이후의 commit도 유지하고 싶으면 revert를 연속적으로 사용하면 된다.
git revert B..HEAD : B 이후부터 HEAD까지, 즉 C, D, E를 revert(실행취소)
git revert B^..HEAD : B^ (B의 직전 부모, 이전 커밋) 이후부터 revert, B, C, D, E를 revert