GIT

GIT 4 - reset & revert

두잇베스트 2021. 2. 17. 14:30

GIT 4 - reset & revert

reset

현재 버전들을 보면

2021-02-17_12-57-18

여기서 최신 버전 Message 3를 삭제하고 , 버전 Message2로 이동하고 싶다면?
git reset을 사용하면 된다. 즉 git reset --hard 버전 커밋 ID를 사용하면 된다.

2021-02-17_13-00-22
2021-02-17_13-03-18

여기서 주의해야할점 git reset --hard 2번째 버전으로 했다는 것은, 버전 Message 2를 리셋한다는 개념이 아니라, 버전 Message 2가 되겠다라는 개념이다.

revert

현재 버전 기록들 상태이다.
2021-02-17_13-10-36

여기서 R4 버전을 삭제하지 않고, R3 버전으로 가고 싶다면? revert를 사용해야한다. 주의할 점은 reset 같은 경우는 가고자 하는 버전을 적어주었지만, revert는 가고자 하는 버전이 아니라, 전 버전을 적어주어야 한다.

2021-02-17_13-19-16

R3 버전으로 가고자, R4 버전의 커밋 ID를 사용했다.

2021-02-17_13-20-35

git log를 보면, 기존의 R4 버전은 사라지지 않고 계속 있다. 즉 R4 버전에서 변화를 취소한것이다. 그래서 R3 버전으로 되어있다. revert는 되돌린다는 개념을 기억하면 될것이다.

결과를 보면,
2021-02-17_13-23-21
2021-02-17_13-24-46

R4 커밋에서 추가되었던 +R4 가 , R4 커밋을 revert를 시키니까 +R4를 취소시키고 , 이전 상태인 R3 버전이 된것이다.

여기서 더 과거로 돌아가고 싶다면?
현재 버전 기록은 Message 1 -> Message 2 -> R3 -> R4
되어있는데, Message 1으로 돌아가고 싶다면? 어떻게 해야할까
여기서 오해하는 점은 Message 2를 revert 하면 Message 1으로 간다고 생각하는 점이다. 그렇게 오류가 날것이다. revert [버전]을 하게 되면 그 해당 버전 변화만 취소하기 때문에, R3와 R4 버전은 유실되어 충돌이 일어난다. 그래서 Message 1으로 돌아가고 싶다면, revert R4 revert R3 , revert Message 2를 하게 되면 Message 1이 된다. 역순으로 revert를 반복해야한다는 점이다.

Reference

버전 삭제 - git reset - 생활코딩
버전 되돌리기 - git revert - 생활코딩