This commit is contained in:
jonnybravo
2026-09-08 11:02:29 +02:00
commit 3ad8c9b5a6
66 changed files with 6169 additions and 0 deletions
+316
View File
@@ -0,0 +1,316 @@
---
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.