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!