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 statusListet auf, welche Dateien sich im Staging-Bereich befinden, nicht gestaged sind oder nicht verfolgt werden.
git logZeigt die gesamte Commit-Historie im Standardformat an.
git diffVergleicht 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 -nZeigt 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 reflogErmöglicht das Einsehen aller Operationsprotokolle aller Branches (einschließlich gelöschter Commits und Reset-Operationen).
Git Branches
git branchListet 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 --onelineZeigt die Commit-Historie an, wobei jeder Commit in einer einzigen Zeile zusammengefasst wird.
git log -pZeigt die Commit-Historie mit den vollständigen Diffs für jeden Commit an.
git log --statZeigt 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 HEADVergleicht das Arbeitsverzeichnis mit dem Repository (nach git commit).
git diff --cachedVergleicht den Staging-Bereich (nach git add) mit dem Repository.
git reset
git resetSetzt den Staging-Bereich zurück, um dem neuesten Commit zu entsprechen, lässt das Arbeitsverzeichnis jedoch unverändert.
git reset --hardSetzt 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> --forceErzwingt 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.