이 git 슬래시 표기법은 아마도 .git
폴더 내부를 보면 가장 잘 이해 될 것입니다 .
예를 들어, 다음은 LibreOffice 소스 기반에 대한 다소 간결한 내 .git 트리입니다.
리눅스 에서는 sudo apt-get install tree
이것을 보는 것이 유용합니다. Windows
에서는 명령이 여전히 작동 할 수 있다고 생각합니다 .tree
아래로 스크롤하여 하단 근처의 참조 (일명 '참조')를 봅니다.
$ tree
.
├── branches
├── config
├── description
├── FETCH_HEAD
├── gitk.cache
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
...
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ ├── heads
│ │ ├── master
│ │ └── remotes
│ │ └── origin
│ └── remotes
│ └── origin
│ ├── distro
│ │ ├── cib
│ │ │ └── libreoffice-6-0
│ │ ├── collabora
│ │ │ └── cp-6.0
│ │ └── lhm
│ │ └── libreoffice-5-2+backports
│ ├── HEAD
│ ├── libreoffice-6-2
│ ├── master
│ └── private
│ └── mst
│ └── sw_redlinehide_4a
├── objects
│ ├── info
│ └── pack
│ ├── pack-b80087dc57e2b3315f449ca0f1aaa91987bf0c5e.idx
│ ├── pack-b80087dc57e2b3315f449ca0f1aaa91987bf0c5e.pack
│ ├── pack-eb4e6808029e712d8d9c2671accbbd98aaeb9a04.idx
│ └── pack-eb4e6808029e712d8d9c2671accbbd98aaeb9a04.pack
├── ORIG_HEAD
├── packed-refs
└── refs
├── heads
│ ├── master
│ └── remotes
│ └── origin
├── remotes
│ └── origin
│ ├── distro
│ │ ├── cib
│ │ │ └── libreoffice-6-0
│ │ ├── collabora
│ │ │ └── cp-6.0
│ │ └── lhm
│ │ └── libreoffice-5-2+backports
│ ├── HEAD
│ ├── libreoffice-6-2
│ ├── master
│ └── private
│ └── mst
│ └── sw_redlinehide_4a
└── tags
└── libreoffice-6-2-branch-point
32 directories, 45 files
다음과 같이 배치하면 혼란스럽지 않았을 수도 있지만 그렇지 않았습니다.
repositories (i.e. independent trees)
├──local
│ └──master
│
└──origin1
│ └──master
└──origin2
└──master
heads , remotes 및 tags 세 가지 기본 참조 유형이 있습니다.
.git / refs / heads 는 로컬 마스터를 보유합니다 .
.git / refs / remotes 는 많은 리모컨 을 보유 할 수 있지만 현재 우리는 원점 을 가지고 있습니다.
.git / refs / 태그 (다른 곳에서 설명)
기원은 따라서 만 원격 우리의 하나입니다. 그것은 보유 원산지 / 마스터 .
우리는 2 개의 HEADS (현재 지점에 대한 포인터), 하나의 로컬 및 하나의 리모콘을 가지고 있음을 발견했습니다.
$ cat .git/HEAD # local: HEAD -> master
ref: refs/heads/master
$ cat .git/refs/remotes/origin/HEAD # remote origin: HEAD -> master
ref: refs/remotes/origin/master
당신이 당신의 지점 을 나열하는 경우 :
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/aoo/aw080
remotes/origin/aoo/trunk
remotes/origin/distro/capgemini/cg-4.1
remotes/origin/distro/cib/libreoffice-5-0
remotes/origin/distro/cib/libreoffice-5-1
remotes/origin/distro/cib/libreoffice-5-2
...
- 나열된 첫 번째 분기 ( master )는 원격이 아닌 유일한 분기 입니다. 따라서이 경우 로컬 지점이 하나 있습니다. 여기에서 우리는 새로운 지점과 후속 커밋을 위해 우리 자신의 작업을 시작할 것입니다.
다음으로, 많은 원격 추적 분기가있을 수 있으며 여기에서 수행합니다. 이들은 ' remotes / ' 로 시작하기 때문에 원격 추적 분기라는 것을 알고 있습니다. 여기에 표시된 것은 원격 이름의 origin에 대한 것입니다.
두 번째 줄은 원점의 현재 분기 포인터입니다. 리모트 / 원산지 : HEAD ------> 마스터. 이것은 원격 저장소에서 현재 브랜치가 master 라는 브랜치임을 나타냅니다 ( master 라는 로컬 브랜치와 혼동하지 말 것 ).
나머지 브랜치는 .git / refs / 트리에서 찾을 수 없지만 오히려에서 찾을 수 있습니다 .git/packed-refs
.
우리가 때 가져 힘내 우리는 우리의 원격 추적 저장소에 원격 저장소의 변경 사항을 다운로드합니다.
git merge를 수행 하면 이 로컬 원격 추적 저장소의 변경 사항을 작업중인 로컬 브랜치 (이 경우 마스터 브랜치)로 병합합니다.
( git pull 을 수행 할 때 한 번의 작업으로이 두 단계를 모두 수행합니다.)
마스터에 대한 이러한 로컬 및 원격 UUID가 현재 동일한 노드 (일명 '커밋')를 가리키는 것에 주목하는 것도 흥미 롭습니다 .
$ cat refs/heads/master # local master
1ca409292272632f443733450313de5a82c54a9c
$ cat refs/remotes/origin/master # remote origin master
1ca409292272632f443733450313de5a82c54a9c
따라서 우리의 로컬 마스터는 리모트의 원점 마스터와 같은 장소를 가리 킵니다 :
[local] master = [remote] origin master
마지막으로 살펴 보는 것도 도움이된다고 생각합니다 .git/packed-refs
$ cat packed-refs
# pack-refs with: peeled fully-peeled
3c1d4742e649fe9c8aed8c2817fe3e1f3364f298 refs/remotes/origin/aoo/aw080
e87c8b7922e9a73e0abb7f9a7a47c9ac3374a826 refs/remotes/origin/aoo/trunk
b70fdffb041c12f124dcc0822b61bf3450e53137 refs/remotes/origin/distro/capgemini/cg-4.1
5dbc3f1754809b9489faaf380b1a4bdbcfbb6205 refs/remotes/origin/distro/cib/libreoffice-5-0
cfdbc96ca47d68d6785fd21829a8d61f49d6e591 refs/remotes/origin/distro/cib/libreoffice-5-1
5189c8c47461ef09739086e55512fc6a10245273 refs/remotes/origin/distro/cib/libreoffice-5-2
3bee5917569ca8e6ee3b086458f5b1a917b88ca1 refs/remotes/origin/distro/cib/libreoffice-5-3
92fbe703f9ca480d3a2b8610d87e991c729edf77 refs/remotes/origin/distro/cib/libreoffice-5-4
05c0a5df66cc69d75280f05b804cf82f3387d42b refs/remotes/origin/distro/cib/libreoffice-6-0
7fe193e759b24b90852e6e327115b77114d7b119 refs/remotes/origin/distro/cib/libreoffice-6-1
8187f7aa413e7ef7b377eea2b057d336bf256867 refs/remotes/origin/distro/collabora/cd-5.3
7a6b608591e21ef61dc05cff9fc58da531035755 refs/remotes/origin/distro/collabora/cd-5.3-3.1
....
의심 할 여지없이 이것이 답변보다 더 많은 질문을 남길 수 있지만, 무엇이 무엇인지에 대한 자신의 질문에 답변하는 데 도움이 될 수 있다고 생각합니다.