Git-Repo-Management für Faule Lazygit – ein Terminal-User-Interface für Git

Von Mirco Lang Lesedauer: 5 min |

Anbieter zum Thema

Git ist zwar berühmt für seine Effizienz, aber im Detail – nun, da ist noch Platz nach oben. Lazygit hilft hier mit einer schicken Oberfläche, eignet sich allerdings eher für fortgeschrittene Nutzer.

Lazygit lässt sich mit wenigen Tastenanschlägen bedienen und nimmt Usern somit viel Arbeit ab.
Lazygit lässt sich mit wenigen Tastenanschlägen bedienen und nimmt Usern somit viel Arbeit ab.
(Bild: Lang / Lazygit)

Lazygit, das sollte man von Beginn an klarstellen, heißt nicht „Easy-Git“. Das Tool eignet sich nicht dafür, Git von Grund auf zu erlernen. Zwar wirkt die bunte Oberfläche deutlich sympathischer als ein leerer Prompt und einige Aufgaben dürften Einsteigern tatsächlich einfacher fallen; fehlt aber etwa das Wissen um Rebasing-Mechaniken oder Konfliktlösungen, hilft Lazygit auch nicht (viel) weiter.

Schlimmer noch: Einsteiger kommen bei Lazygit schnell mit fortgeschrittenen Git-Features in Kontakt, die auf der Kommandozeile tendenziell erst nach Monaten oder Jahren in den persönlichen Werkzeugkasten wandern. Fortgeschrittene können davon jedoch profitieren und neue Dinge entdecken.

Vor allem aber wird Lazygit seinem Namen gerecht: Es reduziert bei vielen Aufgaben schlicht den Aufwand. Und so macht es dann auch für Nicht-Einsteiger einige Dinge einfacher – beispielsweise das Stagen von Teil-Änderungen einer Datei. Aber dazu später mehr.

Lazygit steht für alle Plattformen zur Verfügung lässt sich optional zu den nativen Git-Befehlen hinzuschalten. Man kann also auch Dinge Git-nativ beginnen und mit Lazygit beenden und umgekehrt. Soll heißen: Sie müssen sich keine Sorgen machen, mit Lazygit irgendetwas zu verändern und können es jederzeit beenden, um zum Beispiel Merge-Konflikte auf die gewohnte Art zu handeln – und Lazygit ist anfangs durchaus gewöhnungsbedürftig.

Lazygit-Oberfläche mit Log.
Lazygit-Oberfläche mit Log.
(Bild: Lang / Lazygit)

Um sich zunächst ein Bild von Lazygit machen zu können, braucht es ein eben solches: Der vorangestellte Screenshot zeigt die Startseite von Lazygit. Links findet sich die Navigation mit den Bereichen Status, Files, Branches, Commits/Log und dem Stash. Rechts finden sich dann ein oder mehrere Fenster mit den jeweiligen Inhalten beziehungsweise Informationen zur Auswahl.

Auf den ersten Blick ist ersichtlich, dass Lazygit wie ein ziemlich komfortabler Repo-Browser funktioniert. Das Stöbern in Branches, Commits und Logs allein rechtfertigt schon die Installation dieses cleveren Helfers.

Standards und individuelle Bindings im Überblick.
Standards und individuelle Bindings im Überblick.
(Bild: Lang / Lazygit)

Die Navigation läuft unkompliziert über die Pfeiltasten, Enter und Escape, die Leertaste dient für die Standardaktionen: Checkout für Branches und Commits, Add zum Umschalten des Stage-Status. Das Scrollen im rechten Bereich mit Datei- oder Commit-Inhalten übernehmen die Bild-hoch- und -runter-Tasten. Besonders wichtig: Mit x werden die Tastenbelegungen angezeigt – und zwar kontextsensitiv für den jeweils aktiven Bereich.

Wem diese Kürzel und Funktionen nicht genügen, der kann weitere über eine eigene YAML-Konfiguration anlegen. Die config-Datei öffnet sich über die o-Taste, während der Status-Bereich aktiv ist. Die Syntax erschließt sich am besten beim Betrachten der Lazygit-Vorlage, hier ein kurzer Auszug:

customCommands:
  - key: 'C'
    command: "git commit"
    context: 'global'
    subprocess: true

C als globales Commit-Kürzel ist zum Beispiel eine wirklich gute Ergänzung.

Features

Neben der komfortablen Navigation bringt Lazygit noch viele größere und kleinere Funktionen in den Terminal. Das fängt mit den alltäglichen Aufgaben und Befehlen an: Beispielsweise tauchen neue Dateien im Arbeitsverzeichnis im Files-Bereich auf, wo sich der Staging-Status per Leertaste für einzelne Dateien oder per a für alle umschalten lässt.

Auch öffnen (o) oder editieren (e) von Dateien ist über diesen Bereich möglich. Das alles ist weitgehend intuitiv und im Alltag komfortabler als über den nackten Prompt. Wirklich interessant wird es aber, wenn zum Beispiel nicht die ganze Datei, sondern nur Auszüge daraus zum Index hinzugefügt werden sollen. Mit Lazygit funktioniert das so:

Staging von Auszügen.
Staging von Auszügen.
(Bild: Lang / Lazygit)

Zunächst gilt es, die Datei im Files-Bereich auszuwählen. Per Enter-Taste werden deren noch nicht hinzugefügte Inhalte in einem separaten Bereich (unstaged) angezeigt. Per Leertaste lassen sich diese dann Zeile für Zeile in den Index aufnehmen und in einem weiteren Bereich (staged) anzeigen. Anschließend kann wie gehabt commited werden.

Auf die fast gleich Weise lassen sich auf Commit-Ebene auch individuelle Patches erstellen, um zum Beispiel kurzerhand einige Änderungen eines Commits in einen anderen Commit zu verschieben oder zurück in den Index zu holen. Im Hintergrund führt Lazygit dabei ganz normale Rebases durch – und folglich kann es zu Merge-Konflikten kommen.

Lazygit macht das Leben mit derlei Konflikten ein Stück weit einfacher. Zwar müssen Anwenderinnen und Anwender – natürlich – nach wie vor selbst entscheiden; Konflikte lassen sich aber direkt in Lazygit anzeigen und annehmen oder verwerfen. Auch müssen nicht sämtliche Konfliktmarkierungen einzeln aus den betroffenen Dateien gelöscht werden, stattdessen wird einfach die gewünschte Variante mit der Leertaste bestätigt.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Cherry-Picking via Copy and Paste – echte Vereinfachung
Cherry-Picking via Copy and Paste – echte Vereinfachung
(Bild: Lang / Lazygit)

Auch Branch-übergreifend arbeitet Lazygit sehr ähnlich: Beim Cherry-Picking wird einfach der gewünschte Commit ausgewählt und mit „c“ kopiert – dann wird in den gewünschten Ziel-Branch gewechselt und mit „v“ eingefügt. Das Cherry-Picking wird auf diese Weise etwas schneller und komfortabler, wirklich viel Zeit kann Lazygit aber beim Staging und Erstellen sparen. Darüber hinaus ist die Arbeit weniger fehleranfällig, da ständig Informationen zum Beispiel zu aktuell verwendeten Commits oder Dateien zu sehen sind.

Diese Übersicht ist vor allem bei komplexeren Operationen wie einem interaktiven Rebase nützlich. In Lazygit arbeitet man sich einfach Commit für Commit durch die History, sieht immer den ganzen Commit und entscheidet per Tastenkürzel, welches Kommando ausgeführt werden soll (squash, pick, drop etc.).

Letztlich werden Sie in Lazygit eine ganze Reihe nützlicher Workflow-Abkürzungen finden. So lassen sich über Shift+d Tools zum Bereinigen des Arbeitsverzeichnisses aufrufen, Autostash übernimmt das Stashen und Unstashen nicht übernommener Änderungen beim Branch-Wechsel, Copy&Paste ist an vielen Stellen sehr praktisch, Commits können (bei passendem Git-Host) im Browser geöffnet werden und selbst Pull Requests lassen sich auf Tastendruck erzeugen, wenn das Repo zum Beispiel bei GitHub gehostet wird.

DIE Wunderwaffe?

Bei all dem Lob muss aber auch erwähnt werden, dass der Einstieg in Lazygit zwei, drei Stunden braucht, bevor es wirklich Spaß macht. Für Git-Neulinge wird es sicherlich in Teilen einfacher, da sie sich weniger Befehle merken müssen und mit deutlich mehr Hilfe beglückt werden. Allerdings kommt man eine ganze Zeit lang mit sehr wenigen Git-Kommandos durchs Leben (pull, push, add, commit) – und das ist noch einfacher, weil man eben nicht mit mehreren Logs, Branches, Stash und dem gesamten Funktionsumfang von Git konfrontiert wird.

Fortgeschrittene Git-User werden mit der Funktionalität keine Probleme haben, sondern ganz im Gegenteil schnell neue Features adaptieren. Cherry-Picking etwa ist nicht sonderlich beliebt, aber wenn es plötzlich per Copy and Paste geht? Die Krux für Git-Veteranen ist hier eher die ungewohnte Navigation. Ist diese aber einmal in Fleisch und Blut übergegangen, erspart Lazygit schlicht und ergreifend eine Menge Tipparbeit – und macht seinem Namen damit alle Ehre!

(ID:48988715)