reset과 용도가 비슷함.
보통 CRUD에서 UD를 제한함.
revert를 이용하면 세련된 방식으로 삭제의 목적, 보존의 목적을 달성할 수 있다.
revert는 배우기에 난이도가 있으므로 너무 이해하려 하지 말고 이런게 있구나 정도로
R4를 삭제하고 R3가 되고싶음.
git reset --hard R3의commit 아이디
하면 R3 버전으로 갔었다.
이제 R3로 가고싶다면, R4를 revert
하면 된다. R4를 되돌리기
해야지 R3로 갈 수 있음.
따라서 revert
를 하려면 R4
의 커밋 아이디가 필요하다.
git revert R4의 커밋아이디
자동으로 nano 에디터가 떴다. R4를 revert할 것이라도 미리 적혀있는 것을 볼 수 있다. 여기에 왜 추가적으로 내가 revert 하는지도 적을 수 있다. 저장 후 나가주면, 자동으로 commit이 된다.
git log
를 보면
revert R4를 했다는 커밋이 새로 생성되었고, 그 아래에는 R4가 그대로 남아있는 것을 볼 수 있다. 기존 커밋을 내버려두고, 이 커밋에서의 변화를 취소 -> R3가 됨.
git log -p
는 변경 이력을 출력해준다.
R4 커밋에서 추가되었던 것이 revert R4 커밋에서 제거되었다고 뜬다.
만일 revert
방식으로 Message 1
으로 돌아가고 싶을 때 바로 위에 있는 Message 2를 revert 하면 될까? -> 안된다. 충돌일어남. conflict(이걸 해결하는건 쉽지 않음)
revert R4 -> revert R3 -> revert Message 2를 하면 비로소 Message 1이됨. 역순 순차적으로 해야함.
왜냐하면 revert Message 2를 하면 그전에 있던 모든 변화가 revert 되는 것이아닌, Message 2당시의 변화만 revert 함.