Penso che questa notazione git slash sia probabilmente meglio compresa guardando nella tua .git
cartella.
Ad esempio, ecco un albero in qualche modo abbreviato del mio .git per la base di sorgenti di LibreOffice.
In Linux sudo apt-get install tree
è utile per visualizzare questo.
In Windows penso che il tree
comando potrebbe ancora funzionare.
Scorri verso il basso e dai un'occhiata ai riferimenti (noti anche come "riferimenti") nella parte inferiore:
$ 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
Sarebbe stato meno confuso se fosse stato presentato in questo modo, ma non lo era:
repositories (i.e. independent trees)
├──local
│ └──master
│
└──origin1
│ └──master
└──origin2
└──master
Abbiamo tre tipi base di riferimenti: teste , telecomandi e tag .
.git / refs / heads detiene il nostro padrone locale .
.git / refs / remotes può contenere un numero di telecomandi, sebbene al momento ne abbiamo solo l' origine .
.git / refs / tags (è discusso altrove).
origine quindi, è il nostro unico e solo remoto. Contiene origine / master .
Troviamo che abbiamo 2 HEADS (puntatori ai rami correnti), uno locale e uno remoto:
$ 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
Se elenchi le tue filiali :
$ 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
...
- Il primo ramo elencato ( master ) è l'unico che non è un telecomando. Quindi in questo caso abbiamo una filiale locale. È da qui che inizieremo il nostro lavoro, per le nostre nuove filiali e per i successivi impegni.
Successivamente, potresti avere molte filiali di tracciamento remoto, e lo facciamo qui. Sai che questi sono rami di tracciamento remoti perché hanno il prefisso " telecomandi / ". Quelli mostrati qui sono per l'origine remota denominata.
Quindi la seconda riga è il puntatore del ramo corrente di origine . Telecomandi / origine: HEAD - punta a -> master. Questo dimostra che nel repository remoto, il ramo corrente è il loro ramo chiamato master , (da non confondere con il nostro ramo locale chiamato master ).
I rami rimanenti non si trovano nel tuo .git / refs / tree, ma piuttosto li troverai in .git/packed-refs
.
Quando andiamo a prendere , scarichiamo le modifiche dal repository remoto, nel nostro repository di tracciamento remoto.
Quando ci uniamo uniamo le modifiche in questo repository di tracciamento locale e remoto nel nostro ramo o rami locali di lavoro, in questo caso nel nostro ramo principale.
(Quando eseguiamo pull facciamo entrambi questi due passaggi in un'unica operazione.)
È anche interessante notare che questi UUID locali e remoti per master puntano attualmente allo stesso nodo (noto anche come "commit"):
$ cat refs/heads/master # local master
1ca409292272632f443733450313de5a82c54a9c
$ cat refs/remotes/origin/master # remote origin master
1ca409292272632f443733450313de5a82c54a9c
Quindi il nostro master locale punta allo stesso posto del master di origine del telecomando:
[local] master = [remote] origin master
Infine, penso che sia anche utile dare un'occhiata .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
....
Senza dubbio questo lascia più domande che risposte, ma penso che possa iniziare ad aiutarti a rispondere alle tue domande su cosa sia cosa.