Die Versionsverwaltung Git hat ein sehr gut bedienbares CLI. Dennoch habe ichden Workflow im Terminal nie als ähnlich reibungslos empfunden, wie in einergrafischen Oberfläche, wie z.B. bei EGit in Eclipse. Seit ich einen Arbeitslaptophabe, versuche ich aufgrund meiner Sehbeeinträchtigung aber weitestgehend auf diegrafischen Oberflächen zu verzichten.
Warum EmacsTextbasierte Anwendungen passen sich i.d.R. hervorragend an die im Terminaleingestellte Schriftgröße an. Im Vollbildmodus ist es mir möglich auch am Laptopohne Erkennungsschwierigkeiten bei einer Zeilenlänge von 83 Zeichen im Terminalzu arbeiten. Pflegt man einen guten, konservativen Code-Style ist das völligausreichend.Als Editor der Wahl hat sich schließlich Emacs herauskristallisiert.Emacs bietet unglaublich viele Erweiterungen und man hat die Möglichkeit inmehreren Puffern gleichzeitig zu arbeiten. Das ist in etwa vergleichbar mitmehreren Editor-Tabs in grafischen Editoren.Auch bietet Emacs die Möglichkeit mehrere Puffer gleichzeitig auf dem Bildschirmdar zu stellen, aber das ist ein Feature, welches ich weniger Oft nutze. MeineSehbeeinträchtigung lässt grüßen.Zusätzlich bietet Emacs neben sehr nützlichen mitgelieferten Modulen auch einePaketverwaltung zur Installation weiterer Module. Es wird bereits ein Modulzur Dateiverwaltung (dired) mit geliefert und mit Magit steht in den Paketlistenein Modul zur Arbeit mit Git bereit. Hat man für ein Projekt einmal ein Emacsgeöffnet, gibt es also keine Unterbrechung im Workflow, weil man für Git- oderDateioperationen Emacs nicht mehr verlassen muss.
Arbeiten mit MagitZuunächst muss Magit Installiert werden. In Emacs gibt man hierzu M+x ein(Alt + x). In der Eingabeaufforderung führt man nun den Befehl 'list-packages'aus. In der nun in einem eigenen Puffer angezeigten Liste kann man mitC+s (Strg + s) nach Magit suchen und wird so schnell fündig.Auch die Installation funktioniert sehr intuitiv. Befindet sich der Cursor aufeinem der unterstrichenen Paketnamen wird einem durch drücken der Eingabetasteein Info-Puffer zum Paket angezeigt. Sollte der Cursor hier nicht automatischin den neuen Puffer wandern, kann man dies mit 'C+x o' (Strg + x, dann o)auch selbst erledigen. Befindet sich der Cursor auf 'install' kann man dasMagit Paket einfach über betätigen der Eingabetaste installieren.
Anmerkung zur interaktiven Installation
Natürlich lassen sich zu installierende Pakete auch über eineKonfigurationsdatei fest legen. Das hat dann den Vorteil, dass man diese Dateieinfach mit sich herum tragen kann um jedes gleich aktuelle Emacs schnellan die eigenen Bedürfnisse an zu passen.Das führt hier aber zu weit. Hier empfehle ich dasEmacs Benutzerhandbuch.
Um nun in einem Git Projekt über Magit zu arbeiten reicht es eine Datei, die ineinem Git-Verzeichnis liegt zu öffnen ('C+x f' <Pfad zur Datei> 'Enter').
Über 'C+x g' erhält man den aktullen git status. Zusätzlich werden aber auch dieletzten Commits angezeigt. Magit erledigt hier also etwas mehr als git status.Auch kann man in dem Git-Status Puffer interaktiv arbeiten. Navigiert man aufeine Commit ID und drückt Enter, bekommt man in einem weiteren PufferDetailinformationen zu diesem Commit angezeigt. über 'l l' erhält man eineKomplettansicht das git Logs mit einer guten Darstellung der Branches.
5b7621c * add blubb to bla Mr Bar 3 months
9a462a2 * Merge branch 'master' of git.zib.de:foo$Mr Bar 3 months
|\
15d74ad | * Network install trigger set, please reboot $Mr Bar 3 months
c153ef6 * | tcore initial Mrs Baz 3 months
|/
bf407c5 * install flag for tcore Karl-Heinz Haag 3 months
Es wird also auch übersichtlich die Verzweigung und wieder Zusammenführung beiBranches dar gestellt.
Auch im Log kann wie in der Statusansicht navigiert werden.
Über die Status Ansicht können aber auch interaktiv Änderungen für den Commitvorgemerkt werden.
Hat man eine Änderung in einer Datei vorgenommen und ruft den Status auf (C+x g)bekommt man in etwa so etwas angezeigt:
Head: master add missing bla to blubb update foo/bar$
Rebase: origin/master add missing bla to blubb update f$
Untracked files (1)
my_file~
Unstaged changes (1)
modified my_File
Recent commits
...
Bei der Datei unter 'Untacked files' handelt es sich um die Temporäre Sicherungdes Emacs Puffers für 'my_file'. Diese soll nicht hinzugefügt werden. Hat manin der '.gitignore' solche Dateien ignoriert wird diese Datei natürlich nichtangezeigt. Navigiert man zu my_file und drückt 's' wird diese zum Commitvorgemerkt. Über 'C C' wird der Commit eingeleitet. Es wird dann der CommitPuffer angezeigt. Hat man in diesem seine Commitmessage eingetragen kann manden Commit mit 'C+c C+c' ausführen.
Weiterführende InfosDas geschriebene reicht noch nicht ganz um allen Situationen beim Arbeiten ineinem Git-Repository mit Emacs und Magit gerecht zu werden.Hier empfehle ich die wirklich anschaulich geschriebene
Dokumentation von Magit.Für die Arbeit mit Emacs kann man natürlich das Emacs Handbuch lesen. Ichempfinde aber das Emacs Tutorial als best geeignetste Lektüre für denpraxisnahen einstieg in Emacs. Dieses erreicht man in der Standartkonfigurationvon Emacs, wenn man das Programm ohne eine Datei ausführt: also
emacs
ohneParameter. Möchte man Emacs ohne Grafische Elemente im Terminal starten,befindet sich aber in einer grafischen Desktopumgebung geht dies mit
emacs -nv
. In beiden Fällen Kann man nun das Einführungstutorial einfach überdie Navigation mittels Enter Taste erreichen. Diese sehr einfache im Programmmitgelieferte Einstiegsmöglichkeit ist wirklich genial.