# Git Cheat Sheet ## STAGING & SNAPSHOTS Arbeiten mit Snapshots und dem Git-Staging-Bereich ```bash git status # Zeigt geänderte Dateien im Arbeitsverzeichnis an, die für den nächsten Commit gestaged sind git add [Datei] # Fügt eine Datei in ihrem aktuellen Zustand zum nächsten Commit hinzu (staged) git reset [Datei] # Entfernt eine Datei aus dem Staging-Bereich, behält jedoch die Änderungen im Arbeitsverzeichnis bei git diff # Zeigt den Unterschied zwischen den Änderungen im Arbeitsverzeichnis und den gestagten Änderungen an git diff --staged # Zeigt den Unterschied der gestagten Änderungen, die noch nicht committet wurden git commit -m "[Beschreibung]" # Commitet die gestagten Änderungen als neuen Commit-Snapshot ``` ## SETUP Benutzerinformationen konfigurieren, die in allen lokalen Repositories verwendet werden ```bash git config --global user.name "[Vorname Nachname]" # Setzt einen Namen, der bei der Versionsgeschichte für den Kredit der Änderungen verwendet wird git config --global user.email "[gültige-E-Mail]" # Setzt eine E-Mail-Adresse, die mit jedem Versionsmarker in der Historie verknüpft wird git config --global color.ui auto # Aktiviert automatische Kommandozeilen-Färbung in Git für eine einfachere Ansicht ``` ## SETUP & INIT Benutzerinformationen konfigurieren, Repositories initialisieren und klonen ```bash git init # Initialisiert ein bestehendes Verzeichnis als Git-Repository git clone [URL] # Klont ein gesamtes Repository von einem gehosteten Standort via URL ``` ## BRANCH & MERGE Arbeiten mit Branches, den Kontext wechseln und Änderungen integrieren ```bash git branch # Listet alle Branches auf, ein * wird neben dem aktiven Branch angezeigt git branch [branch-name] # Erstellt einen neuen Branch basierend auf dem aktuellen Commit git checkout # Wechselt zu einem anderen Branch und checkt ihn in dein Arbeitsverzeichnis ein git merge [branch] # Führt die Historie des angegebenen Branches in den aktuellen Branch zusammen git log # Zeigt alle Commits der Historie des aktuellen Branches an ``` ## SHARE & UPDATE Updates von anderen Repositories abrufen und lokale Repositories aktualisieren ```bash git remote add [Alias] [URL] # Fügt eine Git-URL als Alias hinzu git fetch [Alias] # Lädt alle Branches vom angegebenen Git-Remote herunter git merge [Alias]/[Branch] # Führt einen Remote-Branch in deinen aktuellen Branch zusammen, um ihn zu aktualisieren git push [Alias] [Branch] # Überträgt lokale Branch-Commits zum Remote-Repository-Branch git pull # Holt und führt alle Commits aus dem Remote-Tracking-Branch zusammen ``` ## TRACKING PATH CHANGES Dateien und Pfadänderungen versionieren ```bash git rm [Datei] # Löscht die Datei aus dem Projekt und staged die Entfernung für den Commit git mv [alter-Pfad] [neuer-Pfad] # Ändert den Pfad einer bestehenden Datei und staged die Verschiebung git log --stat -M # Zeigt alle Commit-Logs an und kennzeichnet alle verschobenen Dateien ``` ## TEMPORARY COMMITS Temporäres Speichern von Änderungen, um den Branch zu wechseln ```bash git stash # Speichert alle Änderungen, die geändert oder gestaged wurden git stash list # Listet die Änderungen im Stash-Stack auf git stash pop # Holt die Änderungen vom obersten Stack und schreibt sie in das Arbeitsverzeichnis git stash drop # Entfernt die Änderungen vom obersten Stack ``` ## REWRITE HISTORY Branch-Historien umschreiben, Commits aktualisieren und Historie löschen ```bash git rebase [Branch] # Wendet alle Commits des aktuellen Branches auf den angegebenen Branch an git reset --hard [Commit] # Löscht den Staging-Bereich und überschreibt das Arbeitsverzeichnis mit einem bestimmten Commit ``` ## INSPECTION & COMPARISON Logs, Diffs und Objektinformationen anzeigen ```bash git log # Zeigt die Commit-Historie für den aktuell aktiven Branch an git log branchB..branchA # Zeigt die Commits an, die auf BranchA sind, aber nicht auf BranchB git log --follow [Datei] # Zeigt alle Commits an, die die Datei verändert haben, auch über Umbenennungen hinweg git diff branchB...branchA # Zeigt die Unterschiede zwischen BranchA und BranchB an git show [SHA] # Zeigt ein beliebiges Git-Objekt im menschenlesbaren Format an ``` ## IGNORING PATTERNS Verhindern, dass Dateien versehentlich gestaged oder committed werden ```bash git config --global core.excludesfile [Datei] # Systemweite Ignoriermuster für alle lokalen Repositories # Beispiel für ein .gitignore logs/ *.notes pattern*/ ```