본문 바로가기
Git

Git branch & conflict(7)

by GalaxyStar 2024. 2. 19.

현재 저장소가 어떤 버전으로 되어 있는지 알고 싶다면?

Head 가리키는 master 가리키고 있는 버전을 통해서 있다라는 것입니다.

우리가 버전을 하나 생성을 해요. 2라고 하는 버전이 생성되고 버전은 부모가 1이라는것을 알아요.

그리고 master 브랜치가 이제 누구를 가리키느냐?

숫자 2라는 버전을 가리키게 된다.

 

이걸 통해서 무엇을 있다?

현재 저장소의 버전이 무엇이냐 라는것은 Head 따라서 master 따라서 내려가서 현재 저장소는 2 버전에 있다라는 것을 있다.

 

상태에서 git branch중에 master branch 이미 있고 google branch 새로 만들었다.

그럼 어떤일이 생기냐 하면?

 

일단 google 브랜치가 만들어져요. 그리고 branch 어떤 버전으로 시작할 것인지를 결정을 해야 되는데 그때 head 보고 master 보고 master 가리키는 버전을 보고나서 google 이라는 새로운 브랜치는 2 버전으로 시작하는거구나 라는것을 git 알고 시작하는거에요.

 

Checkout google 통해서 현재 저장소의 branch google 바꾼다 라는 것은 Head 가리키고 있는것을 master에서 google 바꾸는 거에요.

 

이걸 통해서 무엇을 있다?

Head 보고 head google 이니까 저장소는 google 브랜치에 checkout되어 있구나. 그리고 저장소의 최신 상태는 이것이구나 라는것을 알수 있다.

상태에서 3번이라는 새로운 버전을 만들고 3번의 부모는 2번이고 그리고 우리가 google checkout 상태로 버전을 만들었기 때문에 google 브랜치는 3번을 가리키게 되는 겁니다.

 

, 이로써 master에서 시작한 google master와는 다른 버전을 가리키게 되는 거에요.

 

Checkout master 한다는 것은 내부적으로 어떤일을 하는 것이냐?

Head 가리키고 있는것을 master 바꾸는 것이고 master 가리키고 있는 2 버전으로 저장소를 바꾸는 거에요.

git-checkout
git-checkout

Checkout 이라는 것은 Head 값을 바꾸는 것이라고 있다. 그래서 여러분이 Head master google 같은 branch 지정할수도 있지만 이렇게도 할수도 있어요.

 

여러분이 checkout 1 하고 엔터를 치면 이제 Head branch 가리키지 않고 1 이라는 이름의 버전을 직접 가리킵니다. 그리고 저장소는 바로 1 저장소의 상태가 될거에요.

 

Head branch 가리키지 않고 commit(버전) 가리키는 상태를 "branch로부터 detached(떨어져있다)."라고 얘기하는것이다.

 

Checkout 이라는것은 Head 제어하는 것이다.

 

Checkout vs Reset

git-checkout-reset
git-checkout-reset

Checkout

뭔가를 change 하는 느낌. 지우는 느낌은 없음.

Head를 제어한다.

 

Reset

뭔가를 지우는 느낌이 있다.

Head branch 가리키고 있는 동안은 branch를 제어한다.

 

Checkout master

checkout
checkout

현재 head google 가리키고 있죠. 상황에 checkout master를 하면 더 이상 head google 아니라 master 가리키게 된다.

 

우리는 현재 master branch 속해있고 우리의 working copy master branch 가리키고 있는 2 버전(commit)으로 바뀐다.

 

Reset 1(master 가리키는 버전)

reset
reset

현재 google branch checkout된 상태죠.

Reset branch 바꾸는 거에요.

Reset master라는 것은 google branch master 가리키고 있는 버전(commit)으로 바꾼다는 뜻이에요.

 

Google 2 버전(commit) 가리키면서 우리의 working copy 2 버전(commit) 상태가 된다.

 

Google 입장에서는 이전에 3번을 가리키고 있었는데 이제 2번을 가리키게 되면서 더 이상 3번은 google 브랜치와는 상관없는 녀석이 된거에요. 그러면서 3번은 사라지게 됩니다.

git-checkout-reset
git-checkout-reset

하지만 reset 뒤에는 branch 아니라 1 버전의 이름이 오는 것이다.

Reset 1이라고 한다면 google branch 1번을 가리키게 되면서 2번, 3번은 더 이상 google 가리키는게 아니기 때문에 지워진 느낌 인것입니다.

'Git' 카테고리의 다른 글

Git Collaboration(2)  (0) 2024.02.21
Git Collaboration(1)  (0) 2024.02.20
Git branch & conflict(6)  (0) 2024.02.19
Git branch & conflict(5)  (0) 2024.02.19
Git branch & conflict(4)  (0) 2024.02.18