이 글은 생활코딩의 GIT CLI - Branch & Conflict 수업을 듣고 작성한 글 입니다.
우리가 git init 명령어를 통해서 저장소를 만들게 되면
HEAD가 master branch를 가르키게 된다.
이는, 저장소의 데이터가 있는 숨김폴더 .git에 들어가서 HEAD 파일을 열어보면 알 수 있다.
HEAD가 현재 어떤 branch에 있는가를 뜻한다.
이 저장소가 어떤 버전인가는 master를 기준으로 한다.
새로운 branch를 만들었을 때,
새 branch의 버전은 내가 branch를 만들 때 있었던 branch가 가르키던 버전이다.
master에서 branch를 만들었다면 branch를 만들 때(git branch new_branch)
HEAD가 master를 가르키고, master가 가르키는 버전이 new_branch의 버전(commit)이다.
checkout을 하게 되면 HEAD가 new_branch를 가르키게 된다.
이 때 new_branch에서 새로운 버전을 만들게 되면,
new_branch는 master와 다른 버전을 가지게 된다.

checkout과 reset의 차이점
1.checkout : HEAD를 제어한다.
-
- checkout master 하게되면 HEAD가 master를 가르키고,
- 이 때 버전은 master가 가르키는 버전이 된다.
2.reset : HEAD가 가르키고 있는 branch를 제어한다.
-
- reset master 하게되면 branch가 가르키는 버전을 master가 가르키는 버전으로 바꾼다
- reset은 삭제의 의미가 아니라, 삭제의 효과를 가져오는 느낌이다.
- 위 이미지에서 google branch에서 git reset master 하게되면 master가 가르키는 버전은 2로 google branch가 가르키는 버전이 바뀌게되고, 3번을 가르키는 branch가 없는 상태이기 때문에, 3번이 사라지는 효과를 가져오게 된다.
[전체 요약]
HEAD : 이 저장소가 어떤 branch를 가르키는가
master branch : 현재 이 저장소의 버전
신규 branch 버전 : HEAD가 가르키는 branch가 가르키던 버전을 그대로 가르키게 된다.
checkout : HEAD가 가르키는 것을 바꾸는 것, commit id를 가르킬 수도 있다.
-
- detached : HEAD가 branch가 아닌 commit id를 가르키는 것
reset : HEAD가 가르키는 branch에서 다른 branch또는 commit id(version)으로 reset을 하게되면 HEAD가 가르키는 branch가 다른 branch가 가르키는 버전을 바라보게되고, 기존의 버전을 바라보는 branch가 하나도 없다면 기존에 가르키던 버전이 삭제되는 것 처럼 보이는 효과를 가지게 된다.
강의에서 설명하는 것을 제가 이해한 대로 설명해보았습니다.
'GIT' 카테고리의 다른 글
GIT CLI - Backup(github연결,push,clone,pull) (0) | 2024.01.14 |
---|---|
GIT CLI - Backup(github, gitlab), 용어 정리 (0) | 2024.01.14 |
GIT CLI - Conflict, 3 way merge, p4merge (1) | 2024.01.14 |
GIT CLI - Branch & Conflict(기본사용법) (0) | 2024.01.14 |
GIT CLI - 버전관리 시작하기2(Update, Delete) (1) | 2024.01.14 |