Git in der IDE: VS Code, Neovim und JetBrains im Vergleich
Im GitLab-Workflow-Post haben wir Git auf der Kommandozeile genutzt – Branches erstellt, Commits geschrieben, Merge Requests angelegt. Alles funktioniert, aber der Workflow hat einen Haken: du springst ständig zwischen Terminal und Editor hin und her.
Im CI/CD-Post ging es um Automatisierung – Pipelines, Runner, Deployment. Aber auch dort hast du wahrscheinlich die Pipeline-Ergebnisse im Browser geprüft, während der Code im Editor offen war.
Dieses ständige Kontextwechseln kostet Zeit und Konzentration. Die Lösung: Git direkt im Editor nutzen. Statt git diff, git add -p und git commit im Terminal einzutippen, kannst du alles in deiner IDE erledigen – mit visuellen Diffs, Inline-Blame und sogar Merge-Conflict-Resolution.
In diesem Post vergleichen wir die drei großen Editoren – VS Code, Neovim (mit LazyVim) und JetBrains IDEs – und schauen uns an, wie gut sie Git integrieren. Dazu kommen Terminal-Tools wie LazyGit und delta, die den Workflow nochmals verbessern.
Wir schauen uns für jeden Editor an:
- Wie sieht der tägliche Git-Workflow aus?
- Welche Plugins brauchst du?
- Wie löst du Merge-Konflikte?
- Wie gut ist die GitLab-Integration?
- Welche Keyboard-Shortcuts solltest du kennen?
Alle Konfigurationen sind praxiserprobt und laufen in meinem Homelab. Die GitLab-Integration bezieht sich auf eine self-hosted Instanz, funktioniert aber genauso mit gitlab.com.
Warum Git-Integration im Editor?
Jeder Kontextwechsel zwischen Editor und Terminal kostet dich mentale Energie. Studien zeigen, dass Entwickler nach einer Unterbrechung bis zu 15 Minuten brauchen, um wieder in den Flow zu kommen. Ein kurzer git status im Terminal klingt harmlos – aber wenn du das 50 Mal am Tag machst, summiert sich das.
Dabei geht es nicht nur um die Sekunden, die du für den Fensterwechsel brauchst. Es geht um den mentalen Kontextwechsel: Du denkst gerade über eine Funktion nach, wechselst ins Terminal, tippst git diff, siehst den Output, musst dich erinnern welche Dateien du stagen wolltest, gehst zurück zum Editor… und hast vergessen, was du gerade machen wolltest.
Manueller vs. integrierter Workflow
graph LR
subgraph "Manueller Workflow"
A1[Code schreiben] --> B1[Zum Terminal wechseln]
B1 --> C1[git diff]
C1 --> D1[git add -p]
D1 --> E1[git commit]
E1 --> F1[Zurück zum Editor]
F1 --> G1[Browser: MR prüfen]
G1 --> H1[Zurück zum Editor]
end
subgraph "Integrierter Workflow"
A2[Code schreiben] --> B2[Gutter: Änderungen sehen]
B2 --> C2[Hunks stagen]
C2 --> D2[Commit im Editor]
D2 --> E2[Pipeline-Status in Statusbar]
end
Was macht gute Git-Integration aus?
Eine IDE sollte diese Git-Funktionen bieten:
- Visual Diff – Änderungen nicht nur als Text, sondern farblich hervorgehoben
- Partial Staging – Einzelne Zeilen oder Hunks stagen, nicht nur ganze Dateien
- Inline Blame – Sofort sehen, wer welche Zeile wann geändert hat
- Merge-Conflict-Resolution – 3-Way-Merge mit visueller Unterstützung
- Branch Management – Branches erstellen, wechseln, löschen ohne Terminal
- Commit History – Log und Graph im Editor navigieren
- Remote Integration – Push, Pull, Fetch ohne Terminal
- GitLab/GitHub-Integration – Merge Requests, Issues, Pipeline-Status direkt im Editor
Je weniger du den Editor verlassen musst, desto besser. Das Ziel ist nicht, das Terminal abzuschaffen – sondern den häufigsten Workflow zu beschleunigen.
VS Code
VS Code ist der Einstieg für die meisten Entwickler – und die Git-Integration ist ein großer Grund dafür. Schon out-of-the-box bekommst du eine solide Basis, die sich mit Extensions massiv erweitern lässt.
Built-in Source Control
VS Code bringt von Haus aus einen Source-Control-View mit (Ctrl+Shift+G). Das ist der schnellste Weg, um den aktuellen Git-Status zu sehen – ohne das Terminal zu öffnen. Dort siehst du:
- Changes – Alle geänderten Dateien
- Staged Changes – Bereits zum Commit vorgemerkte Dateien
- Merge Changes – Dateien mit Konflikten
Du kannst Dateien per Klick stagen (+), unstagen (-) und committen. Die Commit-Message schreibst du direkt im Input-Feld.
1
2
3
4
5
# Diese Aktionen kannst du alle im Source Control View erledigen:
git add file.txt # → Klick auf "+"
git reset HEAD file.txt # → Klick auf "-"
git commit -m "message" # → Message eingeben + Ctrl+Enter
git push # → "..." Menü → Push
Diff Viewer
Der integrierte Diff Viewer ist einer der Stärken von VS Code. Du kannst zwischen zwei Modi wechseln:
- Inline Diff – Änderungen direkt im Code, rot/grün markiert
- Side-by-Side Diff – Alter und neuer Stand nebeneinander
Das Besondere: Partial Staging funktioniert direkt im Diff View. Du kannst einzelne Zeilen oder Hunks stagen, ohne git add -p im Terminal zu nutzen. Einfach den gewünschten Bereich markieren und mit Rechtsklick „Stage Selected Ranges” wählen.
Partial Staging im Diff View ist ein Game-Changer. Du kannst sauber getrennte Commits erstellen, auch wenn du an mehreren Stellen gleichzeitig gearbeitet hast.
GitLens Extension
GitLens ist die wichtigste Git-Extension für VS Code. Sie erweitert die Git-Integration massiv:
Inline Blame: Am Ende jeder Zeile siehst du, wer sie wann geändert hat – dezent in grau. Hover zeigt den kompletten Commit mit Message und Diff.
File History: Zeigt die komplette Geschichte einer Datei mit allen Commits und Diffs.
Repository Graph: Eine visuelle Darstellung des Git-Graphen mit Branches, Merges und Tags. Vergleichbar mit git log --graph, aber interaktiv.
Interactive Rebase: GitLens bietet einen visuellen Editor für Interactive Rebase. Du kannst Commits per Drag & Drop umsortieren und Aktionen (pick, squash, reword, drop) per Dropdown auswählen.
1
2
3
4
5
6
7
8
9
10
{
"gitlens.currentLine.enabled": true,
"gitlens.currentLine.format": "${author}, ${agoOrDate}",
"gitlens.codeLens.enabled": true,
"gitlens.codeLens.authors.enabled": true,
"gitlens.hovers.currentLine.over": "line",
"gitlens.hovers.annotations.details": true,
"gitlens.graph.layout": "editor",
"gitlens.views.repositories.branches.layout": "tree"
}
Merge Conflict Resolution
VS Code erkennt Merge-Konflikte automatisch und zeigt oberhalb jedes Konflikts Buttons:
- Accept Current Change – Deine lokale Version
- Accept Incoming Change – Die Version aus dem Branch
- Accept Both Changes – Beide Versionen behalten
- Compare Changes – Side-by-Side-Vergleich
Für komplexere Konflikte gibt es seit VS Code 1.69 den 3-Way Merge Editor. Du aktivierst ihn über:
1
2
3
{
"git.mergeEditor": true
}
Der 3-Way Merge Editor zeigt drei Panels:
- Current (links) – Dein Branch
- Incoming (rechts) – Der andere Branch
- Result (unten) – Das Ergebnis, das du bearbeitest
Der 3-Way Merge Editor in VS Code hat sich massiv verbessert. Für die meisten Konflikte brauchst du kein externes Tool mehr.
GitLab Workflow Extension
Die GitLab Workflow Extension verbindet VS Code direkt mit deiner GitLab-Instanz:
- Merge Requests erstellen und reviewen
- Pipeline-Status in der Statusbar
- Issues durchsuchen und zuweisen
- Snippets erstellen und abrufen
- CI/CD-Variablen verwalten
1
2
3
4
5
6
{
"gitlab.instanceUrl": "https://gitlab.example.com",
"gitlab.token": "glpat-xxxxxxxxxxxxxxxxxxxx",
"gitlab.showPipelineUpdateNotifications": true,
"gitlab.pipelineGitRemoteName": "origin"
}
Speichere den GitLab-Token nicht direkt in
settings.json, sondern nutze den VS Code Secret Storage. Die Extension fragt beim ersten Start automatisch danach.
Git Graph Extension
Git Graph bietet einen interaktiven Git-Log-Graphen. Im Vergleich zu GitLens’ Graph ist er leichtgewichtiger und schneller. Du kannst:
- Branches visuell verfolgen
- Commits anklicken und Details sehen
- Cherry-Pick, Revert und Reset direkt ausführen
- Tags erstellen und löschen
- Branches vergleichen
Keyboard Shortcuts
| Aktion | Shortcut |
|---|---|
| Source Control öffnen | Ctrl+Shift+G |
| Datei stagen | Ctrl+Shift+G, dann + |
| Commit | Ctrl+Enter (im SCM Input) |
| Git Graph öffnen | Ctrl+Shift+P → “Git Graph” |
| Inline Diff anzeigen | Klick auf Gutter-Indicator |
| Nächste Änderung | Alt+F5 |
| Vorherige Änderung | Shift+Alt+F5 |
| Blame anzeigen (GitLens) | Ctrl+Shift+P → “Toggle File Blame” |
Empfohlene Git-Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"git.autofetch": true,
"git.autofetchPeriod": 120,
"git.confirmSync": false,
"git.enableSmartCommit": true,
"git.smartCommitChanges": "tracked",
"git.pruneOnFetch": true,
"git.pullBeforeCheckout": true,
"git.mergeEditor": true,
"diffEditor.renderSideBySide": true,
"diffEditor.ignoreTrimWhitespace": false,
"scm.defaultViewMode": "tree"
}
git.enableSmartCommitsorgt dafür, dass bei einem Commit ohne gestage Dateien automatisch alle geänderten tracked Files gestaged werden. Praktisch für schnelle Commits, aber Vorsicht bei großen Repos.
Neovim / LazyVim
Neovim mit LazyVim ist das Setup für Leute, die das Terminal lieben und trotzdem eine vollwertige IDE wollen. Die Git-Integration ist nicht built-in, sondern wird über Plugins zusammengestellt – was maximale Flexibilität bietet.
LazyVim ist eine Neovim-Konfiguration, die die besten Plugins vorkonfiguriert mitbringt. Du bekommst ein IDE-ähnliches Erlebnis, ohne alles selbst konfigurieren zu müssen.
fugitive.vim
fugitive.vim von Tim Pope ist das Git-Plugin für Vim/Neovim. Es ist seit Jahren der Standard und bietet eine nahtlose Integration:
Git Status mit :Git (oder :G):
1
2
3
4
5
6
7
8
9
Head: feature/new-api
Push: origin/feature/new-api
Staged (2)
M src/api/handler.go
A src/api/routes.go
Unstaged (1)
M src/config/settings.yaml
In diesem Buffer kannst du:
s– Datei stagenu– Datei unstagen=– Inline-Diff anzeigencc– Commit startenca– Commit amenddd– Diff in Split öffnenX– Änderungen verwerfen (checkout)
Git Blame mit :Git blame:
1
2
3
4
# Zeigt Blame-Annotations am linken Rand
:Git blame
# Blame für eine bestimmte Zeile -- Enter auf der Annotation öffnet den Commit
Git Diff mit :Gvdiffsplit:
1
2
3
4
5
6
7
8
# Diff der aktuellen Datei gegen HEAD
:Gvdiffsplit
# Diff gegen einen bestimmten Branch
:Gvdiffsplit main
# Diff gegen einen bestimmten Commit
:Gvdiffsplit HEAD~3
Merge Conflicts mit fugitive
Für Merge-Konflikte bietet fugitive einen 3-Way-Diff:
1
2
# 3-Way-Merge-Diff öffnen
:Gvdiffsplit!
Das öffnet drei vertikale Splits:
- Links – Target-Branch (ours)
- Mitte – Working Copy (das Ergebnis)
- Rechts – Merge-Branch (theirs)
Du navigierst mit ]c und [c zwischen Konflikten und übernimmst Änderungen mit:
1
2
3
4
5
6
7
8
9
" Änderung vom linken Buffer (ours) übernehmen
:diffget //2
" Änderung vom rechten Buffer (theirs) übernehmen
:diffget //3
" Nach dem Lösen aller Konflikte
:Gwrite
:Git commit
Der 3-Way-Diff in fugitive braucht Eingewöhnung, ist aber extrem mächtig. Tipp: Nutze
:diffupdatewenn die Hervorhebung nach Änderungen nicht mehr stimmt.
gitsigns.nvim
gitsigns.nvim zeigt Git-Änderungen direkt im Gutter (am linken Rand) an:
- Grüne Linie – Neue Zeilen
- Rote Linie – Gelöschte Zeilen
- Blaue Linie – Geänderte Zeilen
LazyVim bringt gitsigns bereits vorkonfiguriert mit. Die wichtigsten Keybindings:
| Aktion | Keybinding |
|---|---|
| Nächster Hunk | ]h |
| Vorheriger Hunk | [h |
| Hunk stagen | <leader>ghs |
| Hunk unstagen | <leader>ghu |
| Hunk-Vorschau | <leader>ghp |
| Blame der Zeile | <leader>ghb |
| Diff gegen Index | <leader>ghd |
| Alle Hunks stagen | <leader>ghS |
| Hunk zurücksetzen | <leader>ghr |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- Erweiterte gitsigns-Konfiguration (optional)
return {
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "▎" },
change = { text = "▎" },
delete = { text = "▁" },
topdelete = { text = "▔" },
changedelete = { text = "▎" },
},
current_line_blame = true,
current_line_blame_opts = {
delay = 300,
virt_text_pos = "eol",
},
current_line_blame_formatter = "<author>, <author_time:%R> - <summary>",
},
}
diffview.nvim
diffview.nvim ist ein Diff-Browser, der an die Diff-Ansicht von VS Code erinnert:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
" Diff aller uncommitted Änderungen
:DiffviewOpen
" Diff gegen einen Branch
:DiffviewOpen main
" Diff zwischen zwei Commits
:DiffviewOpen HEAD~3..HEAD
" File History der aktuellen Datei
:DiffviewFileHistory %
" File History des gesamten Repos
:DiffviewFileHistory
Die Ansicht zeigt links eine Dateiliste und rechts den Diff. Du navigierst mit Tab zwischen den Dateien und ]x / [x zwischen den Konflikten.
diffview.nvim ist besonders nützlich für Code Reviews: Du öffnest den Diff gegen den Main-Branch (DiffviewOpen main) und siehst alle Änderungen übersichtlich aufgelistet – genau wie in einer Merge Request auf GitLab, aber direkt in Neovim.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- diffview.nvim Konfiguration
return {
"sindrets/diffview.nvim",
cmd = { "DiffviewOpen", "DiffviewFileHistory" },
keys = {
{ "<leader>gd", "<cmd>DiffviewOpen<cr>", desc = "Diff View" },
{ "<leader>gh", "<cmd>DiffviewFileHistory %<cr>", desc = "File History" },
{ "<leader>gH", "<cmd>DiffviewFileHistory<cr>", desc = "Repo History" },
},
opts = {
enhanced_diff_hl = true,
view = {
merge_tool = {
layout = "diff3_mixed",
},
},
},
}
Telescope Git Integration
Telescope ist der Fuzzy Finder in LazyVim und bietet mehrere Git-Picker:
| Befehl | Keybinding (LazyVim) | Beschreibung |
|---|---|---|
git_commits |
<leader>gc |
Commits durchsuchen |
git_bcommits |
<leader>gC |
Commits der aktuellen Datei |
git_branches |
<leader>gb |
Branches wechseln |
git_status |
<leader>gs |
Geänderte Dateien |
git_stash |
<leader>gS |
Stash-Liste |
LazyGit im Floating Terminal
Das Killer-Feature für Neovim-Nutzer: LazyGit direkt im Floating Terminal. In LazyVim ist das bereits konfiguriert:
1
2
# LazyGit öffnen
<leader>gg
Das öffnet LazyGit in einem Floating Terminal über dem Editor. Du hast die volle LazyGit-Funktionalität, ohne Neovim zu verlassen. Nach dem Schließen bist du sofort wieder im Code.
Das ist der effizienteste Git-Workflow in Neovim: Code schreiben, <leader>gg drücken, stagen, committen, pushen, q zum Schließen – und du bist wieder im Code. Keine Kontextwechsel, keine Mausbewegungen.
graph TD
A[Neovim: Code schreiben] --> B{"Änderung committen?"}
B -->|Einzelner Hunk| C[gitsigns: leader+ghs]
B -->|Mehrere Dateien| D[LazyGit: leader+gg]
B -->|Komplexer Merge| E[fugitive: Gvdiffsplit!]
C --> F[Commit via fugitive :Git commit]
D --> G[Stage + Commit in LazyGit]
E --> H[diffget + Gwrite]
F --> A
G --> A
H --> F
Neovim + LazyGit ist ideal für die Arbeit auf Homelab-VMs per SSH. Kein X-Server nötig, kein Port-Forwarding, kein Remote-Desktop. Du brauchst nur eine SSH-Verbindung.
Neovim Git-Workflow zusammengefasst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Alle Git-bezogenen Keybindings in LazyVim (Auswahl)
-- <leader>gg → LazyGit (Floating Terminal)
-- <leader>gG → LazyGit (cwd)
-- <leader>gb → Git Blame (Zeile)
-- <leader>gB → Git Browse
-- <leader>gf → LazyGit File History
-- <leader>gl → LazyGit Log
-- <leader>ghs → Stage Hunk
-- <leader>ghr → Reset Hunk
-- <leader>ghS → Stage Buffer
-- <leader>ghR → Reset Buffer
-- <leader>ghp → Preview Hunk
-- <leader>ghb → Blame Line
-- <leader>ghd → Diff This
JetBrains
JetBrains IDEs (IntelliJ, WebStorm, PyCharm, GoLand, etc.) haben die beste Git-Integration aller Editoren – out of the box, ohne Plugins. Alles ist nahtlos integriert und visuell aufbereitet.
Git Tool Window
Das Git Tool Window (Alt+9) ist die Zentrale für alle Git-Operationen. Du siehst:
- Log Tab – Interaktiver Git-Graph mit allen Branches und Tags
- Console Tab – Die tatsächlich ausgeführten Git-Befehle (praktisch zum Lernen)
- Repository Tab – Remote-Informationen
Der Log-Graph ist einer der besten auf dem Markt. Du kannst:
- Commits filtern (nach Autor, Datum, Branch, Pfad)
- Commits vergleichen (Diff zwischen zwei Commits)
- Cherry-Pick, Revert, Reset direkt per Rechtsklick
- Branches erstellen und mergen
Commit Dialog
Der Commit Dialog (Ctrl+K) zeigt dir:
- Alle geänderten Dateien mit Diff-Vorschau
- Checkboxen zum selektiven Stagen
- Commit-Message-Feld mit Autovervollständigung
- Code-Analyse-Warnungen vor dem Commit
- Amend-Option
- Author-Override
Das Besondere: JetBrains führt vor jedem Commit automatisch Code-Inspections durch. Du wirst gewarnt, wenn du TODO-Kommentare, ungelöste Merge-Konflikte oder Code-Style-Probleme committen willst.
Die automatischen Inspections vor dem Commit sind unbezahlbar. Sie fangen Fehler ab, bevor sie ins Repository gelangen – besser als jeder Pre-Commit-Hook.
Local History
Ein Feature, das kein anderer Editor hat: Local History. JetBrains speichert automatisch jede Änderung an einer Datei – unabhängig von Git. Du kannst jederzeit zu einem früheren Stand zurückkehren, auch wenn du nie committed hast.
1
Rechtsklick auf Datei → Local History → Show History
Das hat mir schon mehrfach den Tag gerettet, wenn ich nach einem git reset --hard gemerkt habe, dass ich etwas verloren habe.
VS Code hat mittlerweile ein ähnliches Feature: Timeline (im Explorer Panel). Es ist aber nicht so mächtig wie JetBrains’ Local History, da es auf Git-Commits basiert statt auf automatischen Snapshots.
Shelve und Changelist
Zwei weitere Features, die den Alltag erleichtern:
Shelve Changes: Ähnlich wie git stash, aber mächtiger. Du kannst Änderungen in benannte Shelves speichern, teilweise Dateien shelven und mehrere Shelves gleichzeitig verwalten.
Changelists: Du kannst geänderte Dateien in verschiedene Changelists gruppieren. Das ist praktisch, wenn du an mehreren Features gleichzeitig arbeitest und nur bestimmte Dateien committen willst. JetBrains mapped Changelists automatisch auf Git’s Staging Area.
Visual Diff und Annotate
Diff: Klicke auf die farbigen Markierungen im Gutter, um den Diff für einzelne Hunks zu sehen. Du kannst direkt Rollback, Stage oder Copy-Old-Text wählen.
Annotate (Blame): Rechtsklick im Gutter → „Annotate with Git Blame”. Zeigt für jede Zeile Autor, Datum und Commit-Message. Klick auf eine Annotation öffnet den Commit-Diff.
Merge Conflicts – der beste 3-Way-Merge
JetBrains hat den besten visuellen Merge-Conflict-Editor aller IDEs. Wenn ein Konflikt auftritt:
- Eine Liste aller Dateien mit Konflikten erscheint
- Für jede Datei öffnet sich ein 3-Way-Merge-Dialog:
- Links – Deine Version (Yours)
- Rechts – Die andere Version (Theirs)
- Mitte – Das Ergebnis (Result)
- Du kannst per Klick auf
>>und<<einzelne Änderungen übernehmen - Magic Resolve: JetBrains löst non-overlapping Änderungen automatisch
- Du kannst das Ergebnis direkt in der Mitte editieren
Wenn du häufig Merge-Konflikte lösen musst, ist JetBrains die beste Wahl. Der 3-Way-Merge-Editor ist der intuitivste und mächtigste auf dem Markt.
Branch Management
Unten rechts in der Statusbar siehst du den aktuellen Branch. Klick darauf öffnet das Branch-Popup:
- Branches wechseln (Checkout)
- Neuen Branch erstellen
- Branches vergleichen
- Branches mergen
- Branches löschen
- Remote Branches fetchen
Interactive Rebase: Im Git Log kannst du Commits markieren und „Interactively Rebase from Here” wählen. Der visuelle Rebase-Editor zeigt:
- Alle Commits in der Reihenfolge
- Dropdown pro Commit: Pick, Edit, Squash, Fixup, Drop, Reword
- Drag & Drop zum Umsortieren
Git Log Graph View
Der Git Log (Alt+9 → Log Tab) ist einer der Hauptgründe, warum viele Entwickler bei JetBrains bleiben:
- Farbkodierte Branches – Jeder Branch hat eine eigene Farbe
- Filter – Nach Branch, User, Datum, Pfad oder Text
- Commit-Details – Klick zeigt Diff aller geänderter Dateien
- Vergleiche – Zwei Commits auswählen → Rechtsklick → Compare
- Performance – Auch bei Repos mit 100k+ Commits flüssig
GitLab Plugin
Das GitLab Plugin für JetBrains ermöglicht:
- Merge Requests erstellen und reviewen
- Pipeline-Status sehen
- Code-Reviews mit Inline-Kommentaren
- Issues durchsuchen
Die Konfiguration erfolgt unter Settings → Version Control → GitLab:
- Instance URL eingeben (z.B.
https://gitlab.example.com) - Personal Access Token hinterlegen
- Projekt auswählen
Keyboard Shortcuts
| Aktion | Shortcut |
|---|---|
| Commit Dialog | Ctrl+K |
| Push | Ctrl+Shift+K |
| Pull / Update | Ctrl+T |
| Git Log | Alt+9 |
| Branches | Ctrl+Shift+ ` |
| Annotate (Blame) | Alt+Shift+A (Custom) |
| Nächste Änderung | Ctrl+Alt+Shift+↓ |
| Vorherige Änderung | Ctrl+Alt+Shift+↑ |
| Rollback Hunk | Ctrl+Alt+Z |
| Show Diff | Ctrl+D |
| Shelve Changes | Ctrl+Shift+H |
| VCS Operations Popup | Alt+ ` |
JetBrains IDEs sind nicht kostenlos (außer Community Editions). Für Open-Source-Projekte und Studenten gibt es aber kostenlose Lizenzen.
Terminal-Tools
Auch wenn du hauptsächlich in einer IDE arbeitest – manchmal ist das Terminal einfach schneller. Diese Tools machen Git im Terminal deutlich komfortabler.
LazyGit
LazyGit ist eine Terminal-UI für Git, die quasi alles abdeckt. Fünf Panels zeigen Status, Dateien, Branches, Commits und Stash.
1
2
3
4
5
6
7
8
9
10
11
12
# Installation
# macOS
brew install lazygit
# Arch Linux
sudo pacman -S lazygit
# Ubuntu (via PPA)
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
Die wichtigsten Keybindings in LazyGit:
| Taste | Aktion |
|---|---|
Space |
Datei stagen/unstagen |
a |
Alle stagen/unstagen |
c |
Commit |
C |
Commit mit Editor |
p |
Push |
P |
Pull |
s |
Squash |
r |
Reword Commit |
e |
Edit Commit (Rebase) |
d |
Drop Commit |
f |
Fixup |
m |
Merge |
Enter |
Diff anzeigen |
Custom Commands machen LazyGit noch mächtiger:
1
2
3
4
5
6
7
8
9
10
customCommands:
- key: "G"
command: "glab mr create --fill --yes"
context: "global"
description: "GitLab MR erstellen"
loadingText: "Erstelle Merge Request..."
- key: "V"
command: "glab mr view --web"
context: "global"
description: "MR im Browser öffnen"
LazyGit ist das perfekte Bindeglied zwischen Terminal und IDE. Es bietet 90% der IDE-Funktionalität in einer Terminal-UI.
tig
tig ist ein Text-Mode-Interface für Git. Es ist leichtgewichtiger als LazyGit und fokussiert sich auf das Lesen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Installation
sudo apt install tig # Debian/Ubuntu
brew install tig # macOS
# Log-Ansicht (Standard)
tig
# Status-Ansicht
tig status
# Blame einer Datei
tig blame src/main.go
# Stash-Liste
tig stash
tig eignet sich besonders gut, um schnell durch die Git-History zu navigieren, Blame-Informationen zu lesen oder den Stash zu durchsuchen. Es ist das ideale Tool, wenn du “nur mal schnell gucken” willst, ohne eine volle TUI wie LazyGit zu starten.
Die wichtigsten Keybindings in tig:
| Taste | Aktion |
|---|---|
Enter |
Commit-Details öffnen |
t |
Tree-Ansicht |
d |
Diff-Ansicht |
l |
Log-Ansicht |
s |
Status-Ansicht |
c |
Stage-Ansicht |
y |
Stash-Ansicht |
r |
Refs-Ansicht |
/ |
Suche |
q |
Zurück / Beenden |
delta
delta ersetzt den Standard-Diff-Output von Git durch syntax-highlighted Diffs:
1
2
3
4
5
6
7
8
9
10
11
# Installation
sudo apt install git-delta # Debian/Ubuntu
brew install git-delta # macOS
# Git-Konfiguration
git config --global core.pager delta
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.side-by-side true
git config --global delta.line-numbers true
git config --global delta.syntax-theme "Dracula"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
line-numbers = true
syntax-theme = Dracula
file-style = bold yellow ul
hunk-header-style = omit
[merge]
conflictstyle = diff3
delta + diff3 conflictstyle ist eine Kombination, die du nicht mehr missen willst. Merge-Konflikte werden deutlich übersichtlicher.
glab CLI
glab ist die offizielle GitLab-CLI. Du kannst damit Merge Requests, Issues und Pipelines direkt im Terminal verwalten:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Installation
brew install glab # macOS
# oder: https://gitlab.com/gitlab-org/cli/-/releases
# Konfiguration
glab auth login --hostname gitlab.example.com
# Merge Request erstellen
glab mr create --fill
# Pipeline-Status anzeigen
glab ci status
# Offene MRs auflisten
glab mr list
# MR im Browser öffnen
glab mr view --web
Vergleichstabelle
Alltags-Operationen
| Feature | VS Code | Neovim/LazyVim | JetBrains | LazyGit |
|---|---|---|---|---|
| Stage/Unstage | Klick / + |
s/u (fugitive) |
Checkbox | Space |
| Partial Stage | Diff View | gitsigns Hunks | Diff View | Enter → Lines |
| Commit | Ctrl+Enter |
:Git commit |
Ctrl+K |
c |
| Push | SCM Menü | :Git push |
Ctrl+Shift+K |
p |
| Pull | SCM Menü | :Git pull |
Ctrl+T |
P |
| Inline Blame | GitLens | gitsigns/fugitive | Annotate | – |
| File History | GitLens | diffview.nvim | Git Log | – |
| 3-Way Merge | Merge Editor | :Gvdiffsplit! |
Merge Dialog | – |
| Interactive Rebase | GitLens | LazyGit | Built-in | e |
| Branch Switch | Statusbar | Telescope | Statusbar | Space |
| Git Graph | Git Graph Ext. | LazyGit | Built-in | – |
GitLab-spezifische Features
| Feature | VS Code | Neovim/LazyVim | JetBrains | glab CLI |
|---|---|---|---|---|
| MR erstellen | GitLab Ext. | glab / LazyGit | GitLab Plugin | glab mr create |
| MR reviewen | GitLab Ext. | – | GitLab Plugin | glab mr view |
| Pipeline-Status | Statusbar | – | GitLab Plugin | glab ci status |
| Issues | GitLab Ext. | – | GitLab Plugin | glab issue list |
| Inline-Kommentare | GitLab Ext. | – | GitLab Plugin | – |
Gesamtvergleich
| Kriterium | VS Code | Neovim/LazyVim | JetBrains |
|---|---|---|---|
| Lernkurve | Niedrig | Hoch | Mittel |
| Git out-of-the-box | Gut | Minimal | Hervorragend |
| Git mit Plugins | Hervorragend | Hervorragend | Hervorragend |
| Merge Conflicts | Sehr gut | Gut | Beste |
| Performance | Gut | Beste | Mittel |
| Remote/SSH | Remote SSH Ext. | Nativ | Gateway (Beta) |
| RAM-Verbrauch | ~300-500 MB | ~50-100 MB | ~1-2 GB |
| Kosten | Kostenlos | Kostenlos | Ab 25€/Monat |
| Homelab-Eignung | Sehr gut | Beste | Gut |
| Erweiterbarkeit | Extensions | Lua Plugins | Plugins |
Empfehlungen
Für Einsteiger: VS Code + GitLens
Wenn du gerade erst mit Git anfängst, nimm VS Code. Die Git-Integration funktioniert out of the box, die UI ist intuitiv, und GitLens zeigt dir sofort, was in deinem Repository passiert. Der Diff Viewer und der 3-Way Merge Editor sind für Anfänger viel zugänglicher als die Terminal-basierten Alternativen.
1
2
3
4
# VS Code Extensions installieren
code --install-extension eamodio.gitlens
code --install-extension mhutchie.git-graph
code --install-extension GitLab.gitlab-workflow
Mit diesen drei Extensions hast du alles, was du brauchst. GitLens für Blame und History, Git Graph für den visuellen Log, und die GitLab Extension für Merge Requests und Pipelines.
Für Terminal-Fans: Neovim + LazyGit
Wenn du sowieso im Terminal lebst, ist Neovim mit LazyVim + LazyGit die natürliche Wahl. Du bleibst in deiner gewohnten Umgebung, hast volle Kontrolle über jedes Plugin, und die Performance ist unschlagbar. Besonders auf remote Maschinen per SSH gibt es keine bessere Option.
In meinem Homelab nutze ich Neovim + LazyGit auf allen VMs. Per SSH verbinden,
nvimstarten,<leader>ggfür LazyGit – fertig. Kein VS Code Remote nötig.
Für Profis: JetBrains
Wenn du professionell entwickelst und bereit bist, für deine Tools zu zahlen, bietet JetBrains das beste Gesamtpaket. Der Git Log Graph, der Merge-Conflict-Editor und die automatischen Inspections vor dem Commit sind Features, die kein anderer Editor in dieser Qualität bietet.
Besonders in Teams, die häufig mit Merge-Konflikten arbeiten, spart der 3-Way-Merge-Editor von JetBrains enorm viel Zeit. Die Kombination aus automatischer Auflösung einfacher Konflikte und der visuellen Darstellung komplexer Konflikte ist unübertroffen.
Für das Homelab: Mix
Die pragmatische Lösung für Homelab-Betreiber:
- VS Code auf dem lokalen Rechner für die Hauptentwicklung
- VS Code Remote SSH wenn du auf einer VM mit grafischem Komfort arbeiten willst
- Neovim auf den VMs für schnelle Edits per SSH
- LazyGit überall dort, wo du Git im Terminal brauchst
- glab CLI für GitLab-Interaktion direkt im Terminal
So hast du für jede Situation das richtige Tool. In der Praxis sieht das bei mir so aus:
1
2
3
4
5
6
7
8
9
# Auf dem lokalen Rechner: VS Code mit GitLens
code ~/projects/my-app
# Auf einer Homelab-VM per SSH: Neovim + LazyGit
ssh 192.168.60.89
cd /opt/app && nvim .
# Schneller MR-Check im Terminal
glab mr list --assignee=@me
Installiere auf deinen Homelab-VMs ein einheitliches Setup: Neovim, LazyGit, delta und glab. Am besten über dein Dotfiles-Repo, dann ist jede neue VM sofort einsatzbereit.
Fazit
Git in der IDE zu nutzen ist kein Luxus – es ist ein Produktivitäts-Boost. Egal ob du VS Code, Neovim oder JetBrains nutzt: die visuelle Darstellung von Diffs, Inline Blame und der 3-Way Merge Editor machen dich schneller und reduzieren Fehler.
Im GitLab-Workflow-Post haben wir die Git-Grundlagen gelegt – Branches, Commits, Merge Requests. Im CI/CD-Post kam die Automatisierung dazu. Mit der IDE-Integration schließen wir den Kreis: Du arbeitest im Editor, siehst die Änderungen sofort, committest ohne Kontextwechsel und beobachtest die Pipeline-Ergebnisse direkt in der Statusbar.
Der Workflow sieht dann so aus:
graph LR
A[Code im Editor] --> B[Gutter zeigt Änderungen]
B --> C[Stage & Commit im Editor]
C --> D[Push zum Remote]
D --> E[Pipeline-Status in Statusbar]
E --> F[MR erstellen via Extension]
F --> G[Review im Editor]
G --> A
Am Ende des Tages ist das beste Tool das, mit dem du am produktivsten bist. Probier die verschiedenen Setups aus und finde deinen eigenen Workflow. Die Konfigurationen aus diesem Post sind ein guter Startpunkt – kopier sie in dein Setup und pass sie an deine Bedürfnisse an.
Tipp: Starte mit einem Tool und lerne es richtig, bevor du zum nächsten wechselst. Ein gut beherrschtes Tool schlägt drei halb gelernte.