Git-Befehle Cheat Sheet
Git ist ein Open-Source-System zur verteilten Versionsverwaltung, das die Versionsverwaltung von Projekten von sehr klein bis sehr groß effizient und mit hoher Geschwindigkeit bewältigen kann. Git ist eine Open-Source-Software zur Versionsverwaltung, die von Linus Torvalds entwickelt wurde, um die Entwicklung des Linux-Kernels zu unterstützen.
Git-Grundlagen
git init <directory>Erstellt ein leeres Git-Repository im angegebenen Verzeichnis. Wenn ohne Parameter ausgeführt, wird das aktuelle Verzeichnis als Git-Repository initialisiert.
git clone <repo>Klont das Repository unter <repo> auf den lokalen Rechner. Das ursprüngliche Repository kann sich auf dem lokalen Dateisystem oder auf einem entfernten Rechner über HTTP oder SSH befinden.
git config user.name <name>Definiert den Autorennamen, der für alle Commits im aktuellen Repository verwendet werden soll.
git add <directory>Fügt die Änderungen im Verzeichnis <directory> für den nächsten Commit hinzu.
git commit -m "<message>"Übernimmt den Snapshot der Staging-Area, wobei <message> als Commit-Nachricht verwendet wird.
git statusListet auf, welche Dateien gestaget, nicht gestaget und nicht verfolgt sind.
git logZeigt die gesamte Commit-Historie im Standardformat an.
git diffVergleicht die Unterschiede zwischen dem Arbeitsverzeichnis (noch nicht mit git add hinzugefügt) und der Staging-Area (nach git add).
Änderungen rückgängig machen
git revert <commit>Erstellt einen neuen Commit, der alle in <commit> vorgenommenen Änderungen rückgängig macht, und wendet ihn auf den aktuellen Branch an.
git reset <file>Entfernt <file> aus der Staging-Area, lässt aber das Arbeitsverzeichnis unverändert. Dies hebt das Staging einer Datei auf, ohne Änderungen zu überschreiben.
git clean -nZeigt an, welche Dateien aus dem Arbeitsverzeichnis entfernt werden. Verwenden Sie das Flag -f anstelle von -n, um die Bereinigung tatsächlich durchzuführen.
Historie umschreiben
git commit --amendÄndert das letzte Git-Commit-Ereignis. Wenn das Arbeitsverzeichnis commit-fähige Änderungen enthält, werden diese Änderungen ebenfalls mit dem Befehl git commit –amend übernommen.
git rebase <base>Setzt den aktuellen Branch auf <base> zurück. <base> kann eine Commit-ID, ein Branchname, ein Tag oder HEAD sein.
git reflogErmöglicht das Anzeigen aller Aufzeichnungen aller Branches (einschließlich gelöschter Commits und Reset-Operationen).
Git-Branching
git branchListet alle Branches auf. Fügen Sie einen Parameter <branch> hinzu, um einen neuen Branch mit dem Namen <branch> zu erstellen.
git checkout -b <branch>Erstellt und wechselt zu einem neuen Branch namens <branch>. Lassen Sie -b weg, um zu einem bestehenden Branch zu wechseln.
git merge <branch>Führt den Branch <branch> in den aktuellen Branch zusammen.
Remote-Repositorys
git remote add <name> <url>Fügt ein neues Remote-Repository hinzu. Nach dem Hinzufügen des Remotes können Sie <name> als Abkürzung für <url> in anderen Befehlen verwenden.
git fetch <remote> <branch>Ruft alle Aktualisierungen des angegebenen <branch> vom Repo ab, führt sie aber nicht mit dem lokalen Branch zusammen.
git pull <remote>Ruft die angegebene 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 erforderlichen Commits und Objekten. Wenn das Remote-Repo nicht existiert, wird ein benannter Branch im Remote-Repo erstellt.
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 Computer verwendet wird.
git config --global --editÖffnet die globale Konfigurationsdatei zur manuellen Bearbeitung in einem Texteditor.
git log
git log -<limit>Zeigt die letzten <limit> Einträge der Commit-Historie an.
git log --onelineZeigt die Commit-Historie an, wobei jeder Commit auf eine Zeile komprimiert wird.
git log -pZeigt die Commit-Historie an und zeigt den vollständigen Diff für jeden Commit.
git log --statZeigt die Commit-Historie an, einschließlich der geänderten Dateien und der relativen Anzahl der hinzugefügten oder gelöschten Zeilen in jeder Datei.
git log --author="<pattern>"Sucht nach Commits eines bestimmten Autors.
git log --grep="<pattern>"Durchsucht die Commit-Historie mittels regulärer Ausdrücke.
git log <since>..<until>Zeigt Commits an, die zwischen <since> und <until> stattgefunden haben.
git log -- <file>Zeigt nur Commits an, die die angegebene Datei enthalten.
git diff
git diff HEADVergleicht die Unterschiede zwischen dem Arbeitsverzeichnis (noch nicht mit git add hinzugefügt) und dem Repository (nach git commit).
git diff --cachedVergleicht die Unterschiede zwischen der Staging-Area (nach git add) und dem Repository (nach git commit).
git reset
git resetSetzt die Staging-Area auf den Stand des letzten Commits zurück, lässt aber das Arbeitsverzeichnis unverändert.
git reset --hardSetzt sowohl die Staging-Area als auch das Arbeitsverzeichnis auf den Stand des letzten Commits zurück und überschreibt alle Änderungen im Arbeitsverzeichnis.
git reset <commit>Setzt den Zeiger des aktuellen Branches auf <commit> zurück und setzt die Staging-Area zurück, ändert aber das Arbeitsverzeichnis nicht.
git reset --hard <commit>Gleich wie oben, setzt aber sowohl die Staging-Area als auch das Arbeitsverzeichnis zurück. Löscht nicht committete Änderungen und alle Commits nach <commit>.
git pull
git pull --rebase <remote>Ruft die Remote-Kopie des aktuellen Branches ab und führt ein Rebase auf die lokale Kopie durch. Verwendet git rebase anstatt Merge, um Branches zu integrieren.
git push
git push <remote> --forceErzwingt das Hochladen (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.