git_part3_gir branch head

Eugenius1st·2022년 1월 18일
0

git

목록 보기
16/35


이 사이의 복잡한 관계를 알아보자.

checkout vs reset
이 둘은 닮은 듯 안닮은 친구들이다.

이번 시간은 지적인 허영을 채우기 위함이니 그냥 듣자.

우리가 저장소를 만들게 되면 기본적으로 head 라는 것이 들어진다.
그리고 저장소를 만들면 기본적으로 master branch가 생성이 되고, 기본적으로 이 branch 위에서 버전을 만들고 기본적으로 head 는 master를 가르킨다.

그리고 버전을 만들게 되면 현재 master 브랜치에 있는 상태로 버전을 만들었기 때문에 버전 1을 가르킨다.

우리가 head를 확인하는 방법은
클라이언트 마다 다른데 command line 에서는
log 로 확인하고
sorce tree에서는 점으로 표시가 된다.

현재 저장소가 어떤 버전인지 알고싶다면, head가르키는 master가 가르키는 버전을 보고 알 수 있다.

만약 버전 2를 생성할 경우

이제 master branch가 숫자 2를 가르키게 된다


현재 버전을 head 를 따라 master를 따라 가면서 확인할 수 있다.

만약 새로 google branch를 만들었을경우?
어떤 버전으로 시작할지를 정해야 하는데,


google 브랜치는 2번으로 시작하는 구나를 git이 안다

이때 checkout을 통해 branch를 바꾸면

현재 저장소는 google 이라는 것, 그리고 버전은 2라는 것을 알 수 있다.

그리고 버전 3을 만들면
현재 google 에 checkout 된 상태로 만들었기 때문에 branch는 이제 3번을 가르키게 된다.


즉 master가 가르키는 버전과 google이 가르키는 버전이 다른 것이다.

이상태에서 checkout master을 한다면 내부적으로는

head가 가르키는 것을 master로 옮기고 저장소를 버전2로 바꾼다는 것이다.

즉 이것을 통해 알 수 있는 것은 checkout이라는 것은 결국 head의 값을 바꾼다는 것을 알 수 있다.

따라서 head를 master 와 beanch로 바꿀 수 있지만 만약
checkout 1 이라고 하면 head는 1번이라는 버전을 직접 가르킨다

head가 이렇게 커밋을 가르키는 상태를 detached 상태에 있다라고 이야기 한다.

결국 checkout이라는 것은 head를 제어하는 것이다.

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글