Git
GIT4 - Reset & Revert
summercat
2022. 2. 14. 23:03
Reset vs Revert
reset: 변화된 내용과 그 기록을 삭제
revert: 변화된 내용을 삭제하지만, 변화된 기록과 지운 기록 모두를 보존
Head
- working directory가 어떤 버전을 기반으로 해서 수정 되었는지를 보여줌
- 헤드를 옮긴다 ex) 버전 c에서 버전b로 헤드를 옮길 경우
- working directory를 b의 상태로 바꿈
checkout: 헤드를 직접적으로 바꾸는 명령어
Reset
reset: 헤드가 브랜치를 가리키고 있을 때 그 브랜치가 가리키는 버전을 바꾸는 명령어 > 브랜치를 바꾸는 효과가 남
- head -> master -> C의 경우 git reset B 하면 head -> master -> B : working copy는 B가 됨
- git reset master 하면 master가 가리키는 버전을 가리키라는 뜻 (변화 없음)
- head -> master -> C의 경우 git checkout B 하면 head -> B master -> C : working directory는 B가 됨
- git checkout master 하면 head가 master를 가리키라는 뜻으로, head -> master -> C 가 됨
- head가 브랜치를 가리키지 않고 버전을 직접적으로 가리키는 경우, 헤드가 브랜치로부터 detached라고 표현
git reflog : 내렸던 모든 명령과 그에 따른 원인에 해당되는 버전들이 나열됨
git reset의 종류
- git reset --hard
- git reset --soft
- git reset (mixed): mixed는 생략 가능
Revert
Reset과 Revert의 비교
- git reset --hard commit_2
- git revert commit_3
Revert에서 conflict가 발생할 경우
a -> b -> c -> d 에서 b를 revert하고 싶을 경우, revert b 하면
b를 base로 한 3 way merge과정이 일어남
merge한 후
git revert --continue: commit 메시지 작성 화면으로 넘어감
git revert --abort: revert한 내용(변경사항)을 취소