reset은 모든 것을 지우는 것이지만
revert를 이용하면 세련된 방식으로 삭제의 목적과 보존의 목적을 동시 달성 가능하다.
revert는 이해하기 어렵다.
여기서 '갑니다hi' 없애고 'hello1 커밋합니다' 로 가고싶다면
reset의 경우엔 git reset 하고 'hello1 커밋합니다' 커밋 아이디를 적으면 그 버전으로 간다.
revert의 경우에는 그 위의 '갑니다hi' 를 적어야 'hello1 커밋합니다' 로 간다.
git revert 아이디하면
맨 윗줄에 어떤것을 revert 했는지 나온다.
기존의 commit 갑니다hi1은 냅두고(없애지 않고) revert 갑니다h1은 존재한다. 커밋의 변화를 취소한다.
cat으로 확인해보면
ddd 로 바뀐것이 보인다.
git log -p로 보면 추가되었던 텍스트가 취소 되면서 이전 상태로 되는 것을 확인할 수 있다 >> 이것이 revert이다.
만약
message1 로 가고 싶다면 순서대로
revert R4
revert R3
revert Message2
역순으로 이전의 commit을 revert하면(되돌리기) 된다.
왜냐하면 git revert Message2 은 Message2 이후의 모든 변화룰 되돌리는 것이 아니라 Message2 할때의 변화만을 되돌리는 것이므로 한번에 Messsage2를 revert하면 그 이후에 생긴 revert R3, Revert R4는 오똑하지? 라고 하며 충돌이난다..
이깃은 못하겠어요 !! 라고 complain 을 건다...
따라서 이건 해결하기 어려우므로
역순으로 차근차근 revert 해라..