first
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user