Git Spickzettel: Wichtige Befehle für jeden Entwickler

· 12 Min. Lesezeit

📑 Inhaltsverzeichnis

Git ist das weltweit am häufigsten verwendete Versionskontrollsystem und unterstützt Millionen von Projekten, von Solo-Nebenprojekten bis hin zu Unternehmensanwendungen. Egal, ob Sie ein Solo-Entwickler oder Teil eines großen Teams sind, die Kenntnis der wichtigsten Git-Befehle spart Zeit und verhindert Fehler.

Dieser umfassende Spickzettel deckt alle Befehle ab, die Sie für die tägliche Entwicklungsarbeit benötigen, von grundlegenden Operationen bis hin zu erweiterten Workflows. Wir haben ihn nach Aufgabentyp organisiert, damit Sie schnell finden, was Sie brauchen, wenn Sie es brauchen.

Setzen Sie ein Lesezeichen auf diese Seite als Ihre Schnellreferenz. Für die Formatierung Ihrer Git-Dokumentation und README-Dateien probieren Sie unseren Markdown-Editor.

Einrichtung & Konfiguration

Vor Ihrem ersten Commit müssen Sie Ihre Identität konfigurieren. Diese Einstellungen werden global gespeichert und jedem Commit, den Sie machen, angehängt, damit andere Entwickler wissen, wer welche Änderungen vorgenommen hat.

Ersteinrichtung

git config --global user.name "Ihr Name"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"

Das Flag --global wendet diese Einstellungen auf alle Repositories auf Ihrem Rechner an. Wenn Sie für ein bestimmtes Projekt andere Einstellungen benötigen, führen Sie dieselben Befehle ohne --global innerhalb dieses Repositories aus.

Nützliche Konfigurationsoptionen

git config --global color.ui auto              # Farbige Ausgabe aktivieren
git config --global core.autocrlf true         # Zeilenenden behandeln (Windows)
git config --global core.autocrlf input        # Zeilenenden behandeln (Mac/Linux)
git config --global pull.rebase false          # Merge-Strategie für Pulls verwenden
git config --global alias.st status            # Abkürzung erstellen: git st
git config --global alias.co checkout          # Abkürzung erstellen: git co
git config --global alias.br branch            # Abkürzung erstellen: git br
git config --global alias.ci commit            # Abkürzung erstellen: git ci

Profi-Tipp: Erstellen Sie Aliase für häufig verwendete Befehle. Die obigen Abkürzungen können Ihnen Hunderte von Tastenanschlägen pro Woche ersparen. Sie können auch komplexere Aliase erstellen wie git config --global alias.lg "log --oneline --graph --all" für einen visuellen Commit-Verlauf.

Konfiguration anzeigen und bearbeiten

git config --list                              # Alle Einstellungen anzeigen
git config --list --show-origin                # Zeigen, wo jede Einstellung definiert ist
git config user.name                           # Bestimmte Einstellung anzeigen
git config --global --edit                     # Globale Konfiguration im Editor bearbeiten

Repositories erstellen

Es gibt zwei Möglichkeiten, mit Git zu arbeiten: ein neues Repository initialisieren oder ein vorhandenes von einem Remote-Server klonen.

Ein neues Repository initialisieren

git init                                       # Repository im aktuellen Verzeichnis initialisieren
git init mein-projekt                          # Neues Verzeichnis mit Repository erstellen
git init --bare gemeinsames-repo.git           # Bare-Repository erstellen (für Server)

Wenn Sie git init ausführen, erstellt Git ein verstecktes .git-Verzeichnis, das alle Versionskontrollinformationen speichert. Dieses Verzeichnis enthält Ihren gesamten Projektverlauf, Konfiguration und Metadaten.

Ein vorhandenes Repository klonen

git clone https://github.com/benutzer/repo.git # Über HTTPS klonen
git clone [email protected]:benutzer/repo.git     # Über SSH klonen
git clone <url> mein-ordner                    # In bestimmtes Verzeichnis klonen
git clone --depth 1 <url>                      # Flacher Klon (nur letzter Commit)
git clone --branch develop <url>               # Bestimmten Branch klonen

Flache Klone sind nützlich für CI/CD-Pipelines oder wenn Sie nur den neuesten Code ohne vollständigen Verlauf benötigen. Sie sind deutlich schneller und verbrauchen weniger Speicherplatz.

Schnell-Tipp: Verwenden Sie SSH-URLs anstelle von HTTPS, um zu vermeiden, dass Sie wiederholt Ihr Passwort eingeben müssen. Richten Sie SSH-Schlüssel einmal ein und genießen Sie nahtlose Authentifizierung. GitHub, GitLab und Bitbucket unterstützen alle SSH-Authentifizierung.

Grundlegende Workflow-Befehle

Der zentrale Git-Workflow dreht sich um drei Bereiche: das Arbeitsverzeichnis (Ihre Dateien), den Staging-Bereich (Änderungen, die zum Commit bereit sind) und das Repository (committeter Verlauf). Das Verständnis dieses Ablaufs ist entscheidend für die effektive Nutzung von Git.

Status überprüfen

git status                                     # Status des Arbeitsbaums überprüfen
git status -s                                  # Kurzformat-Ausgabe
git status -sb                                 # Kurzformat mit Branch-Info

Führen Sie git status häufig aus. Es zeigt, welche Dateien geändert, gestaged oder nicht verfolgt sind, und hilft Ihnen, den aktuellen Zustand Ihres Repositories zu verstehen.

Änderungen stagen

git add datei.txt                              # Bestimmte Datei stagen
git add *.js                                   # Alle JavaScript-Dateien stagen
git add .                                      # Alle Änderungen stagen
git add -A                                     # Alle Änderungen stagen (einschließlich Löschungen)
git add -p                                     # Änderungen interaktiv stagen (Patch-Modus)
git add -u                                     # Nur geänderte und gelöschte Dateien stagen

Der Staging-Bereich (auch Index genannt) ermöglicht es Ihnen, präzise Commits zu erstellen. Sie können nur die Änderungen stagen, die Sie einbeziehen möchten, auch wenn Sie mehrere Dateien geändert haben.

Profi-Tipp: Verwenden Sie git add -p, um Änderungen in Blöcken zu überprüfen und zu stagen. Dieser interaktive Modus ermöglicht es Ihnen, große Änderungen in logische Commits aufzuteilen, wodurch Ihr Verlauf sauberer und einfacher zu überprüfen wird. Drücken Sie ? während des Patch-Modus, um alle verfügbaren Optionen zu sehen.

Änderungen committen

git commit -m "Benutzerauthentifizierung hinzufügen" # Commit mit Nachricht
git commit -am "Login-Bug beheben"             # Verfolgte Dateien stagen + committen
git commit --amend                             # Letzten Commit ändern
git commit --amend --no-edit                   # Ändern ohne Nachricht zu ändern
git commit -v                                  # Diff in Commit-Nachrichten-Editor anzeigen

Schreiben Sie klare, beschreibende Commit-Nachrichten. Ein gutes Format ist: eine kurze Zusammenfassung (50 Zeichen oder weniger), gefolgt von einer Leerzeile, dann eine detaillierte Erklärung bei Bedarf.

Änderungen anzeigen

git diff                                       # Nicht gestagte Änderungen anzeigen
git diff --staged                              # Gestagte Änderungen anzeigen
git diff HEAD                                  # Alle Änderungen seit letztem Commit anzeigen
git diff branch1..branch2                      # Zwei Branches vergleichen
git diff --stat                                # Änderungsstatistiken anzeigen
git diff --word-diff                           # Unterschiede auf Wortebene anzeigen

Branching & Merging

Branches sind eine der mächtigsten Funktionen von Git. Sie ermöglichen es Ihnen, an Features, Fixes oder Experimenten isoliert zu arbeiten, ohne die Hauptcodebasis zu beeinflussen.

Branch-Verwaltung

git branch                                     # Lokale Branches auflisten
git branch -a                                  # Alle Branches auflisten (lokal + remote)
git branch feature-login                       # Neuen Branch erstellen
git branch -d feature-login                    # Branch löschen (sicher)
git branch -D feature-login                    # Branch erzwungen löschen
git branch -m alter-name neuer-name            # Branch umbenennen
git branch -vv                                 # Branches mit Tracking-Info anzeigen

Branches wechseln

git checkout feature-login                     # Zu Branch wechseln
git checkout -b feature-signup                 # Neuen Branch erstellen und wechseln
git checkout -                                 # Zu vorherigem Branch wechseln
git switch feature-login                       # Moderne Art, Branches zu wechseln
git switch -c feature-signup                   # Erstellen und wechseln (moderne Syntax)

Der Befehl git switch wurde in Git 2.23 als klarere Alternative zu git checkout eingeführt, das mehrere Zwecke hat. Beide funktionieren identisch zum Wechseln von Branches.

Branches mergen

git merge feature-login                        # Branch in aktuellen Branch mergen
git merge --no-ff feature-login                # Merge-Commit erzwingen (kein Fast-Forward)
git merge --squash feature-login               # Commits zu einem zusammenfassen
git merge --abort                              # Laufenden Merge abbrechen

Wenn Sie mergen, kombiniert Git die Änderungen aus zwei Branches. Wenn beide Branches dieselben Zeilen geändert haben, erhalten Sie einen Merge-Konflikt, der manuell gelöst werden muss.

Merge-Konflikte lösen

Wenn Konflikte auftreten, markiert Git die konfliktierenden Abschnitte in Ihren Dateien:

<<<<<<< HEAD
Ihre aktuellen Änderungen
=======
Eingehende Änderungen aus dem zu mergenden Branch
>>>>>>> feature-branch

Um Konflikte zu lösen:

  1. Öffnen Sie die konfliktierenden Dateien und bearbeiten Sie sie, um die Konflikte zu lösen
  2. Entfernen Sie die Konfliktmarkierungen (<<<<<<<, =======, >>>>>>>)
  3. Stagen Sie die gelösten Dateien mit git add
  4. Schließen Sie den Merge mit git commit ab
git status                                     # Sehen, welche Dateien Konflikte haben
git add geloeste-datei.js                      # Konflikt als gelöst markieren
git merge --continue                           # Merge nach Lösung fortsetzen
git merge --abort                              # Aufgeben und von vorne beginnen

Profi-Tipp: Verwenden Sie ein visuelles Merge-Tool, um Konflikte einfacher zu lösen. Konfigurieren Sie eines mit git config --global merge.tool <tool-name> (Optionen umfassen meld, kdiff3, vimdiff oder das integrierte Tool Ihrer IDE), dann führen Sie git mergetool aus, wenn Konflikte auftreten.

Rebasing

git rebase main                                # Aktuellen Branch auf main rebasen
git rebase -i HEAD~3                           # Interaktives Rebase der letzten 3 Commits
git rebase --continue                          # Nach Konfliktlösung fortsetzen
git rebase --abort                             # Laufendes Rebase abbrechen
git rebase --skip                              # Aktuellen Commit während Rebase überspringen

Rebasing schreibt den Verlauf um, indem es Ihre Commits auf eine neue Basis verschiebt. Es erstellt einen saubereren, linearen Verlauf, sollte aber niemals auf öffentlichen Branches durchgeführt werden, die andere verwenden.

Remote-Operationen

Remote-Repositories sind Versionen Ihres Projekts, die im Internet oder Netzwerk gehostet werden. Sie ermöglichen Zusammenarbeit und Backup.

Remotes verwalten

git remote                                     # Remote-Verbindungen auflisten
git remote -v                                  # Remotes mit URLs auflisten
git remote add origin <url>                    # Neuen Remote hinzufügen
git remote remove origin                       # Remote entfernen
git remote rename origin upstream              # Remote umbenennen
git remote set-url origin <neue-url>           # Remote-URL ändern
git remote show origin                         # Detaillierte Remote-Info anzeigen

Fetchen und Pullen

git fetch                                      # Remote-Änderungen herunterladen
git fetch origin                               # Von bestimmtem Remote fetchen
git fetch --all                                # Von allen Remotes fetchen
git fetch --prune                              # Gelöschte Remote-Branches entfernen
git pull                                       # Remote-Änderungen fetchen und mergen
git pull --rebase                              # Fetchen und rebasen statt mergen
git pull origin main                           # Bestimmten Branch pullen

Der Unterschied zwischen fetch und pull: fetch lädt Änderungen herunter, ändert aber nicht Ihr Arbeitsverzeichnis, während pull fetcht und die Änderungen sofort merged.

Änderungen pushen

git push                                       # Zu Standard-Remote/Branch pushen
git push origin main                           # Zu bestimmtem Remote/Branch pushen
git push -u origin feature-login               # Pushen und Upstream-Tracking setzen
git push --all                                 # Alle Branches pushen
git push --tags                                # Alle Tags pushen
git push --force                               # Erzwungenes Pushen (gefährlich!)
git push --force-with-lease                    # Sichereres erzwungenes Pushen