HEAD und Verweise¶
Die Referenz HEAD verweist auf den gerade genutzten (ausgecheckten) Branch - oft hier also einfach main oder master bezeichnet.
$ cat .git/HEAD
ref: refs/heads/master
Eine Übersicht der Referenzen in .git-Ordner: (hier: Struktur und Objekte)
.git\refs\
├──heads
│ └──master
├──remotes
│ └──origin
│ ├──HEAD
│ └──master
└──tags
Man erkennt (hier) bereits Remote-Referenzen - also Online-Repositories wie auf GitHub und Co.
Über die symbolische Referenz HEAD lassen sich automatisch Commits
ansprechen. Das heißt, wann immer Kommandos wie git log | show
ohne weitere Angabe von Commit-Bezeichnern angewendet werden,
dann wird immer HEAD genutzt.
Also: git show zeigt letzten (aktuellen) Commit des
(aktuellen) Branch (hier oft noch master).
Für HEAD gibt es die Möglichkeit auf Vorgänger zuzugreifen: HEAD^ oder HEAD~1 bezeichnen hierbei den direkten Vorgänger.
Da es später (siehe Merges) auch mehrere Vorgänger-Commits geben kann erweitert sich diese Syntax:
HEAD^ oder HEAD~1 direkter Vorgänger
HEAD^2 direkter Vorgänger in zweitem Branch usw. HEAD^3, HEAD^4, …
HEAD^^^ oder HEAD~3 dritter Vorgänger
HEAD^2~3 dritter Vorgänger im zweiten Vorgänger-Branch (alternativ: HEAD^2^^^)
Anm.: meist sind die Schreibweisen mit ~ komfortabler für die
meisten Shells!
Tipp
Diese Vorgänger-Techniken lassen sich auch auf SHA-1-Commitbezeichner anwenden!