Git에서 매일 사용하는 브랜치. 이 브랜치가 실제로는 얼마나 단순한 구조인지 아시나요?
Git에서 브랜치는 단 41바이트짜리 텍스트 파일일 뿐입니다. 41바이트중 앞의 40바이트는 커밋의 해시값(SHA-1) 이고 나머지 1바이트는 개행 문자(\n)입니다.
예를 들어, main 브랜치는 .git/refs/heads/main이라는 경로에 저장된 파일이고, 그 안엔 아래처럼 SHA-1 해시가 들어 있습니다.
$ cat .git/refs/heads/main
9719faaf84a2223edf255a88568de69bb40299c6이 파일을 열어보면 브랜치가 특정 커밋을 가리키는 포인터 역할만 한다는 것을 알 수 있습니다.
$ git show-ref // 모든 참조의 full hash를 보여줌
9719faaf84a2223edf255a88568de69bb40299c6 refs/heads/main
c33fb4469e8989fde31594a82990722f718a97db refs/remotes/origin/main이것이 바로 Git이 빠르고 유연한 이유 중 하나입니다. 브랜치를 생성하고 삭제해도 무거운 작업이 일어나지 않죠. 그저 ‘커밋을 가리키는 텍스트 파일 하나’만 생기거나 사라질 뿐입니다.
의견을 남겨주세요