Git Glossar
Git-Begriffe von A bis Z. 60 wichtige Begriffe, einfach erklärt.
A
Vorfahre
Ein Commit, der einem anderen in der Historie vorausgeht. Eltern-Commits und deren Eltern sind alle Vorfahren.
Annotierter Tag
Ein Tag mit zusätzlichen Metadaten wie Name und E-Mail des Taggers, Datum und Nachricht. Empfohlen für Releases.
B
Bare-Repository
Ein Repository ohne Arbeitsverzeichnis. Es enthält nur den Inhalt des .git-Ordners. Wird als zentrales Repository zum Teilen genutzt.
Blob
Ein Git-Objekt, das den Inhalt einer Datei speichert. Kurz für „binary large object“.
Verzweigen
Ein verschiebbarer Zeiger auf einen Commit. Steht für eine unabhängige Entwicklungslinie in einem Repository.
C
Cherry-pick
Die Änderungen eines vorhandenen Commits als neuen Commit (mit neuem Hash) auf deinen aktuellen Branch kopieren.
Klon
Eine vollständige Kopie eines Remote-Repositorys – jeder Commit plus Remote-Tracking-Branches wie origin/main –, erstellt mit git clone.
Commit
Ein Schnappschuss deines Repositorys zu einem bestimmten Zeitpunkt. Enthält einen Tree, Eltern-Commit(s), Autor und Nachricht.
Commit-Hash
Eine 40-stellige SHA-1-Prüfsumme, die einen Commit eindeutig identifiziert. Meist reicht eine Kurzform mit 7 Zeichen.
Konflikt
Entsteht, wenn Git Änderungen nicht automatisch zusammenführen kann, weil dieselben Zeilen in beiden Branches unterschiedlich geändert wurden.
D
Detached HEAD
Ein Zustand, in dem HEAD direkt auf einen Commit statt auf einen Branch zeigt. Hier gemachte Änderungen können verloren gehen, wenn sie nicht auf einem Branch gesichert werden.
Diff
Der Unterschied zwischen zwei Versionen einer Datei oder mehrerer Dateien. Zeigt Hinzufügungen, Löschungen und Änderungen.
E
Eingebettetes Repository
Ein Ordner mit eigenem .git innerhalb eines anderen Repositorys. Git speichert ihn nur als Zeiger auf einen Commit (ein Gitlink); nutze stattdessen Submodule.
F
Fast-Forward
Ein Merge, bei dem der Branch-Zeiger einfach vorrückt, weil es keine abweichenden Commits gibt. Es entsteht kein Merge-Commit.
Fetch
Neue Commits und Refs von einem Remote herunterladen, ohne deine eigenen Branches oder deinen Arbeitsbaum anzufassen.
Fixup
Eine Aktion im interaktiven Rebase, die einen Commit in den vorherigen einschmilzt und seine Nachricht verwirft.
Force with Lease
git push --force-with-lease: den Remote-Branch nur überschreiben, wenn er noch dort steht, wo du ihn zuletzt gesehen hast – so geht die Arbeit von Kollegen nie verloren.
Fork
Eine persönliche Kopie eines anderen Repositorys bei einem Hosting-Dienst. Im Open Source üblich, um Änderungen per Pull Request vorzuschlagen.
G
Gegrafteter Commit
In einem flachen Klon der älteste heruntergeladene Commit: Seine Eltern existieren auf dem Server, wurden aber nie heruntergeladen.
H
HEAD
Ein Zeiger auf die aktuelle Branch-Referenz oder den aktuellen Commit. Steht für deine aktuelle Position in der Historie des Repositorys.
Hook
Ein Skript, das automatisch bei bestimmten Git-Ereignissen läuft, etwa pre-commit, post-commit oder pre-push.
Hotfix
Eine dringende Korrektur für veröffentlichten Code, meist auf dem Release-Branch gemacht, getaggt und dann nach main übernommen.
Hunk
Ein Block geänderter Zeilen in einem Diff, mit einigen unveränderten Kontextzeilen drumherum. git add -p stagt Hunk für Hunk.
I
Index
Auch Staging-Bereich genannt. Ein Zwischenbereich, in dem Änderungen vorbereitet werden, bevor sie ins Repository committet werden.
Interaktiver Rebase
git rebase -i: eine Reihe von Commits umschreiben, indem man eine To-do-Liste bearbeitet (pick, reword, squash, fixup, drop).
L
Leichtgewichtiger Tag
Ein einfacher Zeiger auf einen Commit ohne zusätzliche Metadaten. Nur ein Name für einen bestimmten Commit.
M
Main/Master
Der Standard-Hauptbranch eines Repositorys. „main“ ist die moderne Konvention, „master“ der alte Name.
Merge-Commit
Ein Commit mit zwei oder mehr Eltern, der Änderungen aus verschiedenen Branches zusammenführt.
Merge-Konflikt
Wenn Git Unterschiede zwischen zwei Branches nicht automatisch auflösen kann. Die Entwicklerin oder der Entwickler muss ihn von Hand lösen.
O
Objekt
Die grundlegende Speichereinheit von Git. Es gibt vier Arten: Blob (Datei), Tree (Verzeichnis), Commit und Tag.
ORIG_HEAD
Eine Ref, die Git vor riskanten Operationen (reset, merge, rebase) dorthin setzt, wo HEAD war – git reset --hard ORIG_HEAD macht sie rückgängig.
Origin
Der Standardname des Remote-Repositorys, von dem du geklont hast. Zeigt auf die ursprüngliche Quelle.
P
Eltern-Commit
Der Commit, der einem anderen direkt vorausgeht. Merge-Commits haben mehrere Eltern.
Pathspec
Ein Muster, das die Pfade in Git-Befehlen einschränkt. Kann Platzhalter und Verzeichnisangaben enthalten.
Prune
Remote-Tracking-Branches entfernen, deren Branch auf dem Remote nicht mehr existiert (git fetch --prune).
Pull
git fetch, gefolgt vom Mergen (oder Rebasen) des geholten Upstreams in deinen aktuellen Branch.
Pull Request
Eine Anfrage auf einer Hosting-Plattform (GitHub, GitLab …), einen Branch zu prüfen und in einen anderen zu mergen. Selbst kein Git-Befehl.
Push
Deine Commits zu einem Remote hochladen und dessen Branch auf deinen Stand bringen.
R
Rebase
Commits auf einen anderen Basis-Commit neu anwenden; dabei entstehen neue Commits und eine lineare Historie.
Ref
Kurz für „reference“. Ein Zeiger auf einen Commit, etwa ein Branch-Name, ein Tag oder HEAD.
Reflog
Ein Protokoll aller Referenz-Aktualisierungen in deinem lokalen Repository. Hält fest, wann sich Branch-Spitzen und HEAD ändern.
Release-Branch
Ein Branch, der eine ausgelieferte Version enthält, damit Korrekturen darauf möglich sind, während main weiterläuft.
Remote
Eine Version deines Repositorys, die woanders gehostet wird (etwa GitHub, GitLab). Dient zur Zusammenarbeit und als Backup.
Remote-Tracking-Branch
Ein schreibgeschütztes lokales Lesezeichen eines Remote-Branches wie origin/main, aktualisiert durch fetch, pull und push.
Repository
Ein Verzeichnis mit deinen Projektdateien und der gesamten Git-Historie, gespeichert in einem .git-Ordner.
Revert
Ein neuer Commit, der die Änderungen eines früheren rückgängig macht, ohne die Historie umzuschreiben – sicher auf geteilten Branches.
S
SHA-1
Die kryptografische Hashfunktion, mit der Git eindeutige Kennungen für Commits und Objekte erzeugt.
Flacher Klon
Ein Klon nur mit den neuesten Commits (git clone --depth N), üblich in CI; vertiefen mit fetch --depth oder --unshallow.
Signierter Commit
Ein Commit mit einer GPG- (oder SSH-)Signatur, den Hoster als „Verified“ anzeigen können. Erstellt mit git commit -S.
Squash
Mehrere Commits zu einem zusammenfassen, z. B. mit interaktivem Rebase oder git merge --squash.
Staging-Bereich
Der Zwischenbereich zwischen Arbeitsverzeichnis und Repository, in dem du Commits vorbereitest. Auch Index genannt.
Stash
Ein vorübergehendes Regal für nicht committete Änderungen (git stash), damit du mit sauberem Arbeitsbaum die Aufgabe wechseln kannst.
Submodul
Ein Repository, das in ein anderes eingebettet ist. Nützlich, um externe Abhängigkeiten in einer bestimmten Version einzubinden.
T
Tag
Eine benannte Referenz, die auf einen bestimmten Commit zeigt. Wird meist genutzt, um Releases wie v1.0.0 zu markieren.
Tracking-Branch
Ein lokaler Branch mit direkter Verbindung zu einem Remote-Branch. Ermöglicht push/pull, ohne das Remote anzugeben.
Tree
Ein Git-Objekt, das ein Verzeichnis darstellt. Enthält Verweise auf Blobs (Dateien) und andere Trees (Unterverzeichnisse).
U
Nicht getrackte Datei
Eine Datei im Arbeitsverzeichnis, die Git nicht überwacht. Sie landet erst in Commits, wenn sie ausdrücklich hinzugefügt wird.
Upstream
Der Remote-Branch, den ein lokaler Branch verfolgt. Die Quelle, aus der Änderungen gepullt werden.
W
Arbeitsverzeichnis
Das Verzeichnis in deinem Dateisystem, in dem du Dateien bearbeitest. Enthält den aktuellen Checkout deines Projekts.
Arbeitsbaum
Ein anderer Name für das Arbeitsverzeichnis. Die Dateien, die du in deinem Projektordner siehst und bearbeitest.