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한 내용(변경사항)을 취소
'Git' 카테고리의 다른 글
깃헙에 SSH key 등록해서 사용할 때 주의할점 (ssh-agent) (1) | 2023.01.18 |
---|---|
GIT3 - CLI branch & conflict (0) | 2022.02.07 |
GIT3 - CLI Backup (0) | 2022.01.31 |
CLI (Command Line Interface) (0) | 2022.01.31 |
Git2 - CLI 버전관리 (0) | 2022.01.30 |