Integration von Code-Editoren und SCM, Teil 2 Git per Emacs ansteuern und verwalten

Von Mirco Lang

Emacs ist neben Vim immer noch einer der beliebtesten Editoren bei Entwicklern – und Git die unangefochtene Nummer 1 bei Versionsverwaltungen. Und natürlich lässt sich direkt in Emacs mit Git-Repositories arbeiten – nativ oder komfortabler mit dem Add-on Magit.

Emacs-Fenster mit Buffern für Dired und Magit-Status.
Emacs-Fenster mit Buffern für Dired und Magit-Status.
(Bild: Lang / Emacs)

Wie sich Git in Vim integrieren lässt, haben wir bereits betrachtet. Und wenn Emacs und Vim auch wie Feuer und Wasser sein mögen, zwei Dinge haben sie (mindestens) gemeinsam: Ohne Grundkenntnisse geht gar nichts und jegliche Einrichtung ist mit etwas Aufwand verbunden.

Daher ganz kurz zum Einstieg in Emacs: Die Emacs-Steuerung läuft über Tastenkürzel oder auch direkte Befehlseingabe – was anfangs sicherlich einfacher ist. Das wichtigste Kürzel ist ALT+X, da damit die Befehlseingabe geöffnet wird – in Emacs-Notation schreibt sich das jedoch „M-x“.

Insofern finden Sie häufig Emacs-Hilfe in einer Form wie „M-x h <tab>„. Heißt: ALT+X öffnet einen Prompt, dann starten Sie einen Befehl mit „h“ und es folgt die übliche Auto-Vervollständigung via TAB; beendet wird natürlich über die Return-/Enter-Taste. Für den help-Befehl hieße das zum Beispiel: „M-x help RET“.

Über STRG+X, bei Emacs entsprechend „C-x“, gibt es zudem Zugriff auf Tastenkürzel: „C-x h“ markiert beispielsweise den Text des aktiven Buffers. Und mit Buffer wiederum sind die „Fenster“ innerhalb des Emacs-Fensters gemeint. Buffer schließen Sie mit „q“, gewechselt wird mit „C-x o“. Das ist nur ein winziger Einblick, aber für erste Schritte genügt es – Emacs-Dauernutzer werden im Laufe der Zeit dann zu wahren Shortcut-Artisten.

Git mit nativen Mitteln

Mit einem installierten Emacs können Sie auch sofort loslegen und das normale, systemseitig installierte git nutzen. Grundlegend bietet Emacs dafür zwei Optionen: Zum einen lässt sich eine Shell innerhalb von Emacs öffnen: „M-x shell“ öffnet einen Bash-Prompt im Verzeichnis der geöffneten Datei, darin kann man mit den üblichen git-Kommandos arbeiten und die Shell mit „exit“ wieder verlassen. Damit verlassen wir aber erst einmal nur die Shell, den Buffer müssen wir noch mit „C-x k RET“ schließen.

Ein klein wenig fixer geht es über das direkte Absenden von Shell-Befehlen, etwa eine Git-Statusabfrage: „UMSCHALT+ALT+1“ (Emacs-Slang: M-!) führt den Befehl „shell-command“ aus, was wieder in einer Befehlseingabe mündet, hier „git status“. Das Ergebnis wird dann wieder in einem Buffer angezeigt. Für häufiger benötigte Aufrufe lassen sich in der Emacs-Konfiguration unter „~/.emacs“ passende Kürzel eintragen:

(global-set-key (kbd "C-x g") 'shell)(global-set-key (kbd "C-x j") '(lambda () (interactive) (shell-command „git status“)))

Wirklich hübsch ist das nicht unbedingt. Dennoch: Schon mit diesem Minimum an Emacs-Wissen lässt sich durchaus vernünftig mit Git arbeiten.

Magit einrichten

Als wäre Emacs nicht schon komplex genug, Magit fügt noch ein Quäntchen Komplexität hinzu – auf den ersten Blick. Doch Magit hat gleich zwei schöne Eigenschaften: Git-Einsteiger können auch komplexe Git-Operationen über eine Art Menüführung einsetzen, beispielsweise, um einen Log mit hübscher Formatierung hervorzurufen. Und echte Git-Vielnutzer dürfen sich auf spaßige Dinge wie vereinfachte interaktive Rebases freuen oder können Änderungen zeilenweise committen. Dafür muss Magit aber erstmal eingerichtet werden.

Zunächst sollten Sie das System aktualisieren, um Problemen vorzubeugen. So sind beispielsweise Ende letzten Jahres einige GPG-Schlüssel erneuert worden, was beim Einsatz des Paketmanagers Melpa (Milkypostman’s Emacs Lisp Package Archive) zu Fehlermeldungen führen wird.

Zunächst fügen Sie folgenden Code in die Emacs-Konfiguration unter „~/.emacs“ ein, um Melpa zu installieren:

(require 'package)
(add-to-list 'package-archives
   '("melpa" . "http://melpa.org/packages/") t)

Anschließend führen Sie ...

M-x package-refresh-contents RET

... aus, um die Paketliste zu aktualisieren. Abschließend installieren Sie dann Magit via:

M-x package-install RET magit RET“

Um Magit zu testen, versuchen Sie es nun zunächst mit einem „M-x magit-version“, was die Versionen von Emacs, Magit und Git ausgeben sollte.

Magit nutzen

Emacs-Fenster mit Buffern für Dired, Magit-Status und -Optionen.
Emacs-Fenster mit Buffern für Dired, Magit-Status und -Optionen.
(Bild: Lang / Emacs)

Öffnen Sie nun eine Datei aus einem Git-Repository oder navigieren Sie mit dem Emacs-Dateibrowser Dired („M-x dired“) in ein solches Repo. Von hier aus können Sie nun quasi das „Hauptfenster“ von Magit aufrufen, einfach per „M-x magit“ oder „M-x magit-status“. Das gibt einen hübsch formatierten Statusbericht aus, vor allem aber können Sie nun über UMSCHALT+ß (also ?) die Optionen von Magit betrachten. Mit „C-g“ wird die Übersicht wieder geschlossen.

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

Und hier breitet sich nun die volle Kraft des Tools aus. Aus Emacs-Sicht fällt Magit ein wenig aus dem Bedienkonzept, denn statt komplizierter, umfangreicher Tastenkürzel verlangt Magit immer nur simple, einzelne Tasten. Angenommen man möchte das Log mitsamt buntem Graphen anzeigen, dann sieht der Workflow wie folgt aus:

„l“ – ruft die Log-Konfiguration auf.

„-c“ – aktiviert die Option farbiger Graph.

„-D“ – setzt vereinfachte Dekoration.

„-h“ – zeigt zusätzlich die Header.

„l“ – ruft nun den Log für das aktuelle Repo auf.

Die Nutzung ist etwas gewöhnungsbedürftig, denn die angeboten Optionen lassen sich in beliebiger Reihenfolge einfach über ihre Kürzel setzen – samt der davor stehenden Pipe! Genauso wählt man die Optionen auch wieder ab. Und letztlich bestimmen der Anwender, hier über das „l“, welcher Log aufgerufen wird. Diese Konfiguration bleibt natürlich bestehen – beim nächsten Log-Aufruf genügt „M-x magit RET ? l l“.

Damit ist es nun möglich, alle Möglichkeiten von Magit zuzugreifen – denn letztlich läuft es immer wieder auf dasselbe Prozedere hinaus: Status aufrufen, Befehlsübersicht aufrufen, Git-Funktion wählen, den Optionen auf dem Bildschirm folgen. Das ist im Grunde ziemlich simpel, aber wie immer sollte man definitiv nicht mit einem Produktiv-Repository testen.

Durch die teils doch sehr ungewohnte Bedienung kann man sich schon mal verzetteln. Wer beispielsweise Änderungen committen möchte, landet wie üblich im Editor zum Verfassen oder Bestätigen der Commit-Message. Die Bestätigung folgt dann mit „C-c C-c“, also zweimal STRG+C; allerdings funktioniert STRG+C+C ebenfalls. Und wer viel im Terminal arbeitet, wird mit STRG+C sicherlich etwas anderes verbinden als Speichern oder Bestätigen.

Ein wenig GUI ist manchmal hilfreich.
Ein wenig GUI ist manchmal hilfreich.
(Bild: Lang / Magit)

Vielleicht können Sie sich nicht gleich alles merken, was mit Magit zu tun hat – kein Problem! Sobald Sie „M-x magit“ ausführen, erscheint im Emacs-Fenster ein neues Menü „Magit“, wo Sie alles nochmal schön für die Mausarbeit vorfinden. Das ist nicht unbedingt die Kernkompetenz von Emacs, aber es hilft beim Eingewöhnen.

Sie werden hier und da über alternative Wege stolpern, Git in Emacs zu integrieren – aber Magit hat sich hier klar als Standard durchgesetzt. Wenn Sie hier wirklich nach Alternativen suchen, werden Sie diese nur abseits von Emacs finden: Entweder Sie wechseln doch zum Vim-Lager oder setzen auf ausgewachsene Code-Editoren [https://www.dev-insider.de/visual-studio-code-und-atom-unter-windows-a-794828/], in die sich Git meist integrieren lässt.

(ID:46389407)