Skip to content

Git Befehls-Spickzettel

Git ist ein Open-Source-basiertes, verteiltes Versionsverwaltungssystem, das Projekte jeder Größe schnell und effizient bewältigen kann. Git wurde von Linus Torvalds entwickelt, um die Entwicklung des Linux-Kernels zu unterstützen.

Git Grundlagen

git init <directory>

Erstellt ein leeres Git-Repository im angegebenen Verzeichnis. Ohne Argumente wird das aktuelle Verzeichnis als Git-Repository initialisiert.

git clone <repo>

Klont das Repository unter <repo> auf den lokalen Rechner. Das Quell-Repo kann sich auf dem lokalen Dateisystem oder auf einem entfernten Rechner über HTTP oder SSH befinden.

git config user.name <name>

Definiert den Autorennamen für alle Commits im aktuellen Repository.

git add <directory>

Fügt die geänderten Inhalte in <directory> für den nächsten Commit hinzu (Staging).

git commit -m "<message>"

Commit eines Staging-Snapshots mit <message> als Commit-Nachricht.

git status

Listet auf, welche Dateien sich im Staging-Bereich befinden, nicht gestaged sind oder nicht verfolgt werden.

git log

Zeigt die gesamte Commit-Historie im Standardformat an.

git diff

Vergleicht die Unterschiede zwischen dem Arbeitsverzeichnis und dem Staging-Bereich.

Änderungen rückgängig machen

git revert <commit>

Erstellt einen neuen Commit, der alle in <commit> vorgenommenen Änderungen rückgängig macht, und wendet diesen auf den aktuellen Branch an.

git reset <file>

Entfernt <file> aus dem Staging-Bereich, lässt das Arbeitsverzeichnis jedoch unverändert. Dies hebt das Staging der Datei auf, ohne Änderungen zu überschreiben.

git clean -n

Zeigt an, welche Dateien aus dem Arbeitsverzeichnis gelöscht würden. Verwenden Sie den Parameter -f anstelle von -n, um die Bereinigung tatsächlich auszuführen.

Git-Historie umschreiben

git commit --amend

Ändert den neuesten Git-Commit. Wenn im Arbeitsverzeichnis commit-fähige Änderungen vorliegen, werden diese zusammen mit den Änderungen des letzten Commits übernommen.

git rebase <base>

Setzt den aktuellen Branch auf <base> neu. <base> kann eine Commit-ID, ein Branch-Name, ein Tag oder HEAD sein.

git reflog

Ermöglicht das Einsehen aller Operationsprotokolle aller Branches (einschließlich gelöschter Commits und Reset-Operationen).

Git Branches

git branch

Listet alle Branches auf. Fügen Sie ein Argument <branch> hinzu, um einen neuen Branch namens <branch> zu erstellen.

git checkout -b <branch>

Erstellt und checkt einen neuen Branch namens <branch> aus. Lassen Sie -b weg, um einen vorhandenen Branch auszuchecken.

git merge <branch>

Führt den Branch <branch> in den aktuellen Branch zusammen.

Remote-Repositories

git remote add <name> <url>

Fügt ein neues Remote-Repository hinzu. Danach kann <name> als Abkürzung für <url> in anderen Befehlen verwendet werden.

git fetch <remote> <branch>

Ruft alle Aktualisierungen für den angegebenen <branch> aus dem Repository ab, führt sie jedoch nicht mit dem lokalen Branch zusammen.

git pull <remote>

Ruft die Remote-Kopie des aktuellen Branches ab und führt sie sofort in die lokale Kopie zusammen.

git push <remote> <branch>

Überträgt den Branch nach <remote>, zusammen mit den notwendigen Commits und Objekten. Erstellt einen benannten Branch im Remote-Repo, falls dieser noch nicht existiert.

git config

git config --global user.name <name>

Definiert den Autorennamen für alle Commits des aktuellen Benutzers.

git config --global user.email <email>

Definiert die E-Mail-Adresse des Autors für alle Commits des aktuellen Benutzers.

git config --global alias.<alias-name> <git-command>

Erstellt eine Abkürzung (Alias) für einen Git-Befehl.

git config --system core.editor <editor>

Legt den Texteditor fest, der von Befehlen für alle Benutzer auf dem Rechner verwendet wird.

git config --global --edit

Öffnet die globale Konfigurationsdatei in einem Texteditor zur manuellen Bearbeitung.

git log

git log -<limit>

Zeigt die letzten <limit> Commit-Einträge an.

git log --oneline

Zeigt die Commit-Historie an, wobei jeder Commit in einer einzigen Zeile zusammengefasst wird.

git log -p

Zeigt die Commit-Historie mit den vollständigen Diffs für jeden Commit an.

git log --stat

Zeigt die Commit-Historie an, einschließlich der geänderten Dateien und der relativen Anzahl der hinzugefügten oder gelöschten Zeilen.

git log --author="<pattern>"

Sucht nach Commits eines bestimmten Autors.

git log --grep="<pattern>"

Durchsucht die Commit-Historie mithilfe von regulären Ausdrücken (Regex).

git log <since>..<until>

Zeigt Commits an, die zwischen <since> und <until> stattgefunden haben.

git log -- <file>

Zeigt nur Commit-Einträge an, die die angegebene Datei enthalten.

git diff

git diff HEAD

Vergleicht das Arbeitsverzeichnis mit dem Repository (nach git commit).

git diff --cached

Vergleicht den Staging-Bereich (nach git add) mit dem Repository.

git reset

git reset

Setzt den Staging-Bereich zurück, um dem neuesten Commit zu entsprechen, lässt das Arbeitsverzeichnis jedoch unverändert.

git reset --hard

Setzt sowohl den Staging-Bereich als auch das Arbeitsverzeichnis auf den neuesten Commit zurück und überschreibt alle Änderungen.

git reset <commit>

Verschiebt den Tipp des aktuellen Branches zurück auf <commit> und setzt den Staging-Bereich zurück, ohne das Arbeitsverzeichnis zu verändern.

git reset --hard <commit>

Wie oben, setzt aber zusätzlich das Arbeitsverzeichnis zurück. Löscht nicht committete Änderungen und alle Commits nach <commit>.

git pull

git pull --rebase <remote>

Ruft die Remote-Kopie ab und setzt die lokale Kopie darauf neu (Rebase) anstatt sie zusammenzuführen.

git push

git push <remote> --force

Erzwingt das Hochladen der Änderungen (Force Push).

git push <remote> --all

Überträgt alle lokalen Branches in das angegebene Remote-Repository.

git push <remote> --tags

Überträgt alle lokalen Tags in das Remote-Repository.