처음부터 차근차근

branch의 원리와 git log의 원리 본문

Git

branch의 원리와 git log의 원리

_soyoung 2021. 10. 1. 18:22
반응형
Branch 원리

1. HEAD파일은 현재 checkout한 branch 파일을 가리킨다(HEAD는 파일이다).

git init(깃 초기화)을 하면 HEAD라는 파일이 만들어지고, HEAD는 현재 checkout된 branch인 master 파일을 가리킨다.

HEAD안 master파일

그리고 commit을 하면 master 파일은 commit을 가리킨다.

 

 

ksy branch로 checkout하면 HEAD파일 안에는 refs/heads/ksy가 있다.

 

 

 

2. branch는 단지 ref아래에 있는 파일이다.

master 파일은 refs/heads 아래에 있다.

(refs/heads/master)

 

branch(브랜치 명 : ksy)를 새로 만들면

이 2개 파일이 새로 생기고, refs/heads 아래에 branch파일이 새로 만들어진다.

(refs/heads/ksy)

 

그래서 브랜치를 삭제할 때 아래처럼 작성해도 삭제가 된다.

(branch는 하나의 파일이기 때문에 이 파일을 삭제하면 굳이 삭제 명령어 안쳐도 삭제가 됨)

rm .git/refs/heads/ksy

 

 

 

 

3. branch 파일 안에는 자신 branch에서 한 가장 최신 commit이 있다.

refs/heads/ksy 파일을 보면 분기된 직후라서 분기된 부분의 최신 comit id가 입력되있는 것을 볼 수 있다.

 

그래서 branch를 새로 만드려면 .git/refs/heads/브랜치명 파일을 새로 만들어서 안에다 분기된 부분의 최신 comit id를 입력해주면 된다.

vim .git/refs/heads/브랜치명
59bb114ceaae882889752434aaacece7fc9e5be6

 

 

 

 

 

git log 원리

 

git log를 치면 git은 HEAD 파일 안의 해당 branch 파일로 가서 branch 파일 안에있는 commit정보로 가서 가장 최근 commit 알 수 있다. 그리고 그 이 전 commit은 parent로 탐색한다.

master branch에서 git log했을 때의 예

 

 

 

 

 

 

 

참고 : '지옥에서 온 git - 생활코딩' 변형 및 요약

반응형

'Git' 카테고리의 다른 글

reset 취소와 commit checkout  (0) 2021.10.28
Branch 충돌  (0) 2021.10.19
commit의 원리  (0) 2021.09.30
git add 원리  (0) 2021.09.29
gistroy 설치  (0) 2021.09.28
Comments