Ich denke, diese Git-Slash-Notation lässt sich wahrscheinlich am besten verstehen, wenn Sie in Ihren .git
Ordner schauen .
Hier ist zum Beispiel ein etwas abgekürzter Baum meiner .git für die LibreOffice-Quellbasis.
Unter Linux sudo apt-get install tree
ist dies nützlich, um dies anzuzeigen.
Unter Windowstree
funktioniert der Befehl möglicherweise noch.
Scrollen Sie nach unten und sehen Sie sich unten die Referenzen (auch als "Referenzen" bezeichnet) an:
$ 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
Es wäre vielleicht weniger verwirrend gewesen, wenn es so angelegt wäre, aber es war nicht:
repositories (i.e. independent trees)
├──local
│ └──master
│
└──origin1
│ └──master
└──origin2
└──master
Wir haben drei grundlegende Arten von Referenzen: Köpfe , Fernbedienungen und Tags .
.git / refs / Heads hält unseren lokalen Meister .
.git / refs / remotes kann eine Reihe von Fernbedienungen enthalten, obwohl wir im Moment nur einen Ursprung darin haben.
.git / refs / tags (wird an anderer Stelle besprochen).
Ursprung ist also unsere einzige Ferne. Es enthält Herkunft / Master .
Wir stellen fest, dass wir 2 KÖPFE (Zeiger auf aktuelle Zweige) haben, einen lokalen und einen entfernten:
$ 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
Wenn Sie Ihre Filialen auflisten :
$ 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
...
- Der erste aufgeführte Zweig ( Master ) ist der einzige, der keine Fernbedienung ist. In diesem Fall haben wir also eine lokale Niederlassung. Hier beginnen wir unsere eigene Arbeit für unsere eigenen neuen Niederlassungen und nachfolgenden Verpflichtungen.
Als nächstes haben Sie möglicherweise viele Remote-Tracking-Zweige, und das tun wir hier. Sie wissen, dass dies Fernverfolgungszweige sind, da ihnen ' Fernbedienungen / ' vorangestellt sind . Die hier gezeigten sind für den entfernten benannten Ursprung.
Die zweite Zeile ist also der aktuelle Verzweigungszeiger des Ursprungs . Fernbedienungen / Ursprung: HEAD - zeigt auf -> Master. Dies zeigt, dass im Remote-Repository der aktuelle Zweig der Zweig mit dem Namen master ist (nicht zu verwechseln mit unserem lokalen Zweig mit dem Namen master ).
Die restlichen Zweige befinden sich nicht in Ihrer .git / refs / tree, sondern in .git / refs / tree .git/packed-refs
.
Wenn wir fit holen , laden wir Änderungen aus dem Remote-Repository in unser Remote-Tracking-Repository herunter.
Wenn wir git merge zusammenführen, führen wir die Änderungen in diesem lokalen Remote-Tracking-Repository in unserem oder mehreren funktionierenden lokalen Zweigen zusammen, in diesem Fall in unserem Hauptzweig.
(Wenn wir ziehen, machen wir diese beiden Schritte in einer Operation.)
Es ist auch interessant zu beachten, dass diese lokalen und Remote- UUIDs für Master derzeit auf denselben Knoten verweisen (auch bekannt als "Commit"):
$ cat refs/heads/master # local master
1ca409292272632f443733450313de5a82c54a9c
$ cat refs/remotes/origin/master # remote origin master
1ca409292272632f443733450313de5a82c54a9c
Unser lokaler Master zeigt also auf denselben Ort wie der Ursprungsmaster der Fernbedienung:
[local] master = [remote] origin master
Schließlich denke ich, dass es auch nützlich ist, einen Blick darauf zu werfen .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
....
Zweifellos hinterlässt dies mehr Fragen als Antworten, aber ich denke, es kann Ihnen helfen, Ihre eigenen Fragen zu beantworten, was was ist.