DevOps/GIT

github#5 git HEAD file

aliceintr 2020. 11. 20. 03:02
반응형

gistory 를 실행한 후

 

**NOTE : 아래 링크를 클릭하면 gistory 에 관한 전반적 내용이 있습니다.

 

[IT/DevOps] - github#3 : gistory and git rm

 

git init을 하게 되면 볼 수 있는 파일이

./.git/HEAD 이다.

./.git/HEAD 은 ./.git/refs/heads/master 을 가르킨다.

./.git/refs/heads/master 은 가장 최신 commit ID 를 확인할 수 있다.

 여기서 git log 가 작동하는 원리를 알 수 있다. git log 는 가장 최신 commit 을 상단에 보여주게 되는데 이는 git이 내부적으로 ./.git/HEAD 라는 파일을 가지고 있고 이 파일은 ./.git/refs/heads/master 을 가르킨다. 그리고 이 master 파일은 가장 최근에 commit 한 오브젝트 정보를 가지고 있어 우리가 git log 를 통해 가장 최신 commit을 확인 할 수 있다.

 

 

이제 exp 라는 이름의 브랜치를 한번 만들어 본다

% git branch exp

gistory 확인해보면

가장 최신 commit 오브젝트를 포함한 새로운 ./refs/heads/exp 가 생성된걸 볼 수 있다.

 

 

이렇게 만들어진 브랜치를 terminal에서 지워본다면

 % rm .git/refs/heads/exp
 
 % git branch
* master

브랜치 리스트에는 마스터만 볼 수 있다.

그 후 다시 exp 파일을 vi 를 통해 만들어 보자 그 안에는 최신 commit ID 를 넣는다.

% vim .git/refs/heads/exp

다시 git branch 리스트를 보면 exp 가 생성된 것을 확인 할 수 있다.

% git branch
  exp
* master

이제 브렌치를 exp 로 바꾸면 HEAD 파일의 내용이 바뀜 refs/heads/master ▷refs/heads/exp

% git checkout exp 
Switched to branch 'exp'

 

 

 

 

내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.

* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *

 

 

반응형

'DevOps > GIT' 카테고리의 다른 글

github#7 3 ways merge  (0) 2020.11.20
github#6 git merge conflict  (0) 2020.11.20
github#4 branch  (0) 2020.11.17
github#3 gistory and git rm  (0) 2020.11.16
github #2 github reset  (0) 2020.11.16