Nachschlagen

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.