Files
hugo_docker/content/lazygit.md
T
2026-09-08 11:02:29 +02:00

316 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.