--- title: "Lazygit – Der Terminal-Git-Client" date: "2026-09-08" --- # Lazygit – Der Terminal-Git-Client Lazygit ist ein schneller, terminalbasierter Git-Client mit TUI (Terminal User Interface). Du steuerst alles per Tastatur und behältst dein ganzes Repository auf einen Blick – kein Merken von kryptischen `git`-Befehlen mehr. ## Installation ```bash # Arch / Manjaro sudo pacman -S lazygit # Ubuntu / Debian LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" tar xf lazygit.tar.gz lazygit sudo install lazygit /usr/local/bin # macOS brew install lazygit # Windows (mit Winget) winget install JesseDuffield.lazygit ``` Start: Einfach `lazygit` im Repository-Verzeichnis ausführen. --- ## Navigation (global) | Taste | Aktion | |-------|--------| | `h` / `l` | Zwischen Panels wechseln (links/rechts) | | `j` / `k` | In Liste nach unten/oben | | `↑` / `↓` | Dasselbe wie j/k | | `g` | Zum Anfang der Liste | | `shift+G` | Zum Ende der Liste | | `/` | Suchen (im aktuellen Panel) | | `q` | Lazygit beenden | | `esc` | Zurück / Aktion abbrechen | | `?` | Hilfe anzeigen (alle Tasten) | | `tab` | In neuem Panel: zwischen Bereichen springen | --- ## Panel 1: Status (ganz links) Zeigt, ob du im normalen Modus, im Rebase, Merge-Konflikt etc. bist. Normalerweise springst du mit `1`-`5` direkt in die anderen Panels. --- ## Panel 2: Dateien / Working Tree Hier siehst du alle geänderten, neuen und gelöschten Dateien. | Taste | Aktion | |-------|--------| | `Leertaste` | Datei stagen/unstagen (markiert) | | `a` | Alle Dateien stagen/unstagen | | `c` | Commit erstellen (öffnet Editor für Commit-Message) | | `shift+C` | Commit mit Editor (git commit) | | `enter` | Diff der ausgewählten Datei anzeigen | | `d` | Änderungen der Datei verwerfen (Achtung, unwiderruflich!) | | `shift+D` | Datei aus Working Tree löschen | | `e` | Datei im Editor öffnen | | `o` | Datei mit Standardprogramm öffnen | | `i` | Datei zu .gitignore hinzufügen / Eintrag entfernen | | `p` | Patch – interaktiv nur Teile einer Datei stagen | ### Patch-Modus (`p`) Nach Drücken von `p` auf einer Datei: | Taste | Aktion | |-------|--------| | `Leertaste` | Aktuellen Hunks stagen/unstagen | | `j` / `k` | Zwischen Hunks navigieren | | `v` | Selektionsmodus (visuell) – dann Leertaste für Auswahl | | `tab` | In Diff-Fenster springen | --- ## Panel 3: Branches | Taste | Aktion | |-------|--------| | `Leertaste` | Branch auschecken | | `n` | Neuen Branch erstellen | | `c` | Branch mit Namen umbenennen (checkout) | | `shift+C` | Branch umbenennen (ohne checkout) | | `d` | Branch löschen | | `shift+D` | Branch force-löschen (auch wenn nicht gemerged) | | `m` | Aktuellen Branch in ausgewählten Branch mergen | | `M` | Merge ohne Fast-Forward | | `enter` | Commits des Branches anzeigen | | `r` | Branch rebasen auf ausgewählten Branch | | `f` | Fast-Forward des ausgewählten Branches | | `T` | Tag erstellen | | `g` | Branch zurücksetzen (reset) auf ausgewählten | --- ## Panel 4: Commits (im Branch-Panel mit Enter) | Taste | Aktion | |-------|--------| | `s` | Squash down – Commit in den darunterliegenden squashen | | `shift+S` | Fixup – Commit in darunterliegenden squashen, Message verwerfen | | `r` | Rebase auf diesen Commit starten / Rebase fortsetzen | | `R` | Commit-Message mit `git commit --amend` bearbeiten | | `A` | Commit mit Staged-Änderungen amendend (git commit --amend) | | `t` | Commit rückgängig machen (revert) | | `shift+T` | Revert erstellen, ohne zu commiten | | `ctrl+j` / `ctrl+k` | Commit in der Liste nach unten/oben verschieben (interaktiv) | | `g` | Reset auf diesen Commit – Optionen: | | | `soft` – HEAD verschieben, Index bleibt | | | `mixed` (default) – HEAD + Index verschieben | | | `hard` – HEAD + Index + Working Tree (Achtung, verwirft!) | | `d` | Commit löschen (während Rebase) | | `shift+D` | Commits ab hier löschen (während Rebase) | | `f` | Fixup-Commit erstellen | | `shift+F` | Fixup-Commit für einen bestimmten Commit | | `enter` | Dateien des Commits anzeigen | | `ctrl+l` | Commit-Log anzeigen | | `shift+C` | Commit kopieren (cherry-pick) | | `v` | Commits in die Zwischenablage kopieren | --- ## Panel 5: Stash | Taste | Aktion | |-------|--------| | `Leertaste` | Stash anwenden | | `g` | Stash anwenden und danach löschen (pop) | | `d` | Stash löschen | | `enter` | Dateien des Stashs anzeigen | | `n` | Neuen Stash mit Nachricht erstellen | | `s` | Schnell-Stash (ohne Nachricht) | --- ## Reflog Mit `ctrl+o` (oder im Commits-Panel) öffnest du das Reflog – alle HEAD-Bewegungen. | Taste | Aktion | |-------|--------| | `enter` | Reflog-Eintrag anzeigen | | `g` | Auf diesen Eintrag zurücksetzen (soft/mixed/hard) | | `ctrl+o` | Reflog schließen | --- ## Remote / Push & Pull | Taste | Aktion | |-------|--------| | `p` | Push (im Branch- oder Commits-Panel) | | `shift+P` | Force-Push (`--force-with-lease`) | | `shift+F` | Fetch (alle Remotes) | | `ctrl+p` | Pull (fetch + merge) | | `shift+ctrl+P` | Pull mit Rebase | --- ## Undo / Redo Lazygit hat eine eingebaute Undo-Funktion – ein Lebensretter! | Taste | Aktion | |-------|--------| | `z` | Letzte Git-Aktion rückgängig machen (undo) | | `shift+Z` | Rückgängig gemachte Aktion wiederholen (redo) | Funktioniert für: Commit, Stash, Branch-Reset, Checkout, Cherry-Pick, Revert, Merge ... --- ## Konflikte lösen Im Merge-Konflikt-Fall zeigt Lazygit die betroffenen Dateien. | Taste | Aktion | |-------|--------| | `Leertaste` | Datei als "ours" markieren (eigene Version) | | `b` | Datei als "theirs" markieren (fremde Version) | | `↑` / `↓` | Hunk auswählen | | `Leertaste` | Hunk auswählen (ours/theirs oder beide) | | `a` | Alle Hunks auf einmal akzeptieren | | `shift+M` | Merge-Tool für diese Datei öffnen | --- ## Submodule | Taste | Aktion | |-------|--------| | `enter` | In Submodule wechseln (öffnet neue Lazygit-Instanz) | | `i` | Submodule init | | `u` | Submodule updaten | | `n` | Submodule hinzufügen | --- ## Worktrees | Taste | Aktion | |-------|--------| | `n` | Neues Worktree erstellen | | `enter` | In Worktree wechseln | | `d` | Worktree löschen | --- ## Tipps & häufige Workflows ### Änderungen committen ``` 1. j/k → Datei auswählen 2. Leertaste → Stagen 3. c → Commit-Message schreiben, Enter 4. p → Pushen ``` ### Letzten Commit ändern (amend) ``` 1. a → Alle Dateien stagen 2. shift+A → Amend (fügt Staged-Änderungen zum letzten Commit hinzu) ``` ### Branch erstellen und wechseln ``` 1. 3 → Branch-Panel 2. n → Neuen Branch, Namen eingeben, Enter ``` ### Commits zusammenfassen (squash) ``` 1. 4 → Commits-Panel 2. j/k → Commit auswählen (der, der in den darunterliegenden gesquasht werden soll) 3. s → Squash ``` ### Commit rückgängig machen ``` 1. 4 → Commits-Panel 2. g → "reset" 3. soft → HEAD verschieben, Änderungen bleiben im Index ``` Falls du es dir anders überlegst: `z` (undo). ### Interaktives Rebase ``` 1. 4 → Commits-Panel 2. r auf einem älteren Commit → Rebase starten 3. j/k → Commits auswählen, dann s/f/d zum Squashen/Fixen/Löschen 4. r → Rebase fortsetzen ``` --- ## Konfiguration Die Konfigurationsdatei liegt unter: - Linux/macOS: `~/.config/lazygit/config.yml` - Windows: `%APPDATA%/lazygit/config.yml` Beispiel für ein nützliches Config-Snippet: ```yaml gui: theme: activeBorderColor: - '#89b4fa' - bold inactiveBorderColor: - '#a6adc8' nerdFontsVersion: "3" git: paging: colorArg: always pager: delta --dark --paging=never # Commit-Konvention für Merge-Commits commitPrefixes: my_project: pattern: "^(\\w+\\/\\w+-\\d+)" replace: "[$1] " ``` --- ## Fazit Lazygit macht Git massiv schneller: Du siehst Diff, Branches, Commits und Stashes gleichzeitig, stagen mit Leertaste, commiten mit `c`, pushen mit `p`. Kein `git status`-Tippen mehr, kein `git log --oneline`-Starren. Die beiden wichtigsten Tasten: `z` für Undo und `?` für Hilfe.