git revert/reset차이
d
c
b
a
a부터 d까지 순서대로 commit 한 상태일 때 되돌리기를 해보자.
되돌리기 방법중 대표적인 Revert와 Reset은 차이가 있다.
1. Revert: d를 취소하는 commit을 발생 시킨다.
2. Reset : d를 아예 취소시킨다.
Revert를 할 경우 d를 취소하는 commit 을 추가하게 된다.
Revert를 실행 한 후 commit 리스트를 살펴보면
-d
d
c
b
a
순서로 나타나게 되며 이전 d를 commit 한 이력은 그대로 둔 상태에서 추가로 -d commit이 추가된것을 볼 수 있다.
이 후 상대방에게도 pull할 경우 -d가 추가된다.
Reset은 d를 아예 삭제 한다.
Reset을 실행 한 후 commit 리스트를 살펴보면
c
b
a
순서로 나타나며 이전 d를 commit 한 이력 자체를 삭제 하고 이전 커밋으로 돌아간다(HEAD를 옮기다는 표현을 쓴다)
하지만 이미 푸시 한 상태로 서버(remote)에도 d까지 올라간 상태라면 커밋을 리셋하면 서버와 로컬 커밋 히스토리가 일치하지 않는다.
d를 삭제하고 강제로 push 하고 싶다면 --force 를 통해 강제로 서버에 올릴수 있다.
상대방이 pull 받은 상태에서 Resert을 실행한 경우 상대방은 리파지터리 다시 받는게 깔끔하다.
https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0
'개발 > git' 카테고리의 다른 글
[git] 브런치생성 (0) | 2018.10.14 |
---|---|
[git]시작하기/ 생성, 원격저장소 연결, 파일올리기까지 전부 (init,commit,remote,push) (0) | 2018.10.07 |