Kapitel ▾ 2. Auflage

A1.1 Anhang A: Git in anderen Umgebungen - Grafische Benutzeroberflächen

Wenn Sie das ganze Buch gelesen haben, haben Sie viel darüber gelernt, wie Sie Git auf der Kommandozeile verwenden können. Sie können mit lokalen Dateien arbeiten, Ihr Repository über ein Netzwerk mit anderen verbinden und effektiv mit anderen zusammenarbeiten. Aber die Geschichte endet hier nicht; Git wird normalerweise als Teil eines größeren Ökosystems verwendet, und das Terminal ist nicht immer der beste Weg, damit zu arbeiten. Nun werfen wir einen Blick auf einige der anderen Arten von Umgebungen, in denen Git nützlich sein kann, und wie andere Anwendungen (einschließlich Ihrer) neben Git funktionieren.

Grafische Benutzeroberflächen

Gits native Umgebung ist das Terminal. Neue Funktionen erscheinen dort zuerst, und nur auf der Kommandozeile steht Ihnen die volle Leistung von Git vollständig zur Verfügung. Aber einfacher Text ist nicht für alle Aufgaben die beste Wahl; manchmal ist eine visuelle Darstellung das, was Sie brauchen, und einige Benutzer sind mit einer Point-and-Click-Oberfläche viel vertrauter.

Es ist wichtig zu beachten, dass verschiedene Schnittstellen für unterschiedliche Arbeitsabläufe maßgeschneidert sind. Einige Clients bieten nur eine sorgfältig kuratierte Teilmenge der Git-Funktionalität an, um eine bestimmte Arbeitsweise zu unterstützen, die der Autor für effektiv hält. Aus dieser Sicht kann keines dieser Tools als „besser“ als die anderen bezeichnet werden; sie sind einfach besser für ihren vorgesehenen Zweck geeignet. Beachten Sie auch, dass es nichts gibt, was diese grafischen Clients tun können, was der Kommandozeilen-Client nicht kann; die Kommandozeile ist immer noch dort, wo Sie die meiste Macht und Kontrolle haben, wenn Sie mit Ihren Repositories arbeiten.

gitk und git-gui

Wenn Sie Git installieren, erhalten Sie auch seine visuellen Werkzeuge, gitk und git-gui.

gitk ist ein grafischer Verlaufsvisualisierer. Betrachten Sie es wie eine leistungsstarke GUI-Shell über git log und git grep. Dies ist das Werkzeug, das Sie verwenden sollten, wenn Sie versuchen, etwas zu finden, das in der Vergangenheit passiert ist, oder den Verlauf Ihres Projekts zu visualisieren.

Gitk lässt sich am einfachsten von der Kommandozeile aufrufen. Wechseln Sie einfach mit cd in ein Git-Repository und geben Sie ein

$ gitk [git log options]

Gitk akzeptiert viele Kommandozeilenoptionen, von denen die meisten an die zugrundeliegende git log-Aktion weitergegeben werden. Wahrscheinlich eine der nützlichsten ist die Flagge --all, die gitk anweist, Commits anzuzeigen, die von *irgendeinem* Ref erreichbar sind, nicht nur von HEAD. Die Benutzeroberfläche von Gitk sieht so aus

The `gitk` history viewer
Abbildung 177. Der gitk-Verlaufsvisualisierer

Oben befindet sich etwas, das dem Ergebnis von git log --graph ähnelt; jeder Punkt repräsentiert einen Commit, die Linien repräsentieren Elternbeziehungen und Refs werden als farbige Felder angezeigt. Der gelbe Punkt repräsentiert HEAD und der rote Punkt repräsentiert Änderungen, die noch kein Commit sind. Unten befindet sich eine Ansicht des ausgewählten Commits; die Kommentare und Patches auf der linken Seite und eine Zusammenfassungsansicht auf der rechten Seite. Dazwischen befindet sich eine Sammlung von Steuerelementen zum Durchsuchen des Verlaufs.

git-gui hingegen ist in erster Linie ein Werkzeug zum Erstellen von Commits. Auch dieses lässt sich am einfachsten von der Kommandozeile aufrufen

$ git gui

Und es sieht ungefähr so aus

The `git-gui` commit tool
Abbildung 178. Das git-gui Commit-Tool

Links befindet sich der Index; nicht-gestagte Änderungen sind oben, gestagte Änderungen unten. Sie können ganze Dateien zwischen den beiden Zuständen verschieben, indem Sie auf ihre Symbole klicken, oder Sie können eine Datei zur Ansicht auswählen, indem Sie auf ihren Namen klicken.

Oben rechts befindet sich die Diff-Ansicht, die die Änderungen für die gerade ausgewählte Datei anzeigt. Sie können einzelne Hunks (oder einzelne Zeilen) stagen, indem Sie mit der rechten Maustaste in diesen Bereich klicken.

Unten rechts befindet sich der Nachrichten- und Aktionsbereich. Geben Sie Ihre Nachricht in das Textfeld ein und klicken Sie auf "Commit", um etwas Ähnliches wie git commit zu tun. Sie können auch den letzten Commit ändern, indem Sie die Optionsschaltfläche "Amend" auswählen, wodurch der Bereich "Staged Changes" mit dem Inhalt des letzten Commits aktualisiert wird. Dann können Sie einfach einige Änderungen stagen oder unstagen, die Commit-Nachricht ändern und erneut auf "Commit" klicken, um den alten Commit durch einen neuen zu ersetzen.

gitk und git-gui sind Beispiele für aufgabenorientierte Werkzeuge. Jeder von ihnen ist für einen bestimmten Zweck (Verlauf anzeigen bzw. Commits erstellen) maßgeschneidert und lässt die für diese Aufgabe nicht benötigten Funktionen weg.

GitHub für macOS und Windows

GitHub hat zwei workflow-orientierte Git-Clients erstellt: einen für Windows und einen für macOS. Diese Clients sind ein gutes Beispiel für workflow-orientierte Werkzeuge – anstatt *alle* Git-Funktionalitäten freizulegen, konzentrieren sie sich auf eine kuratierte Auswahl häufig verwendeter Funktionen, die gut zusammenarbeiten. Sie sehen so aus

GitHub for macOS
Abbildung 179. GitHub für macOS
GitHub for Windows
Abbildung 180. GitHub für Windows

Sie sind so konzipiert, dass sie sich sehr ähnlich aussehen und verhalten, daher behandeln wir sie in diesem Kapitel wie ein einziges Produkt. Wir werden diese Werkzeuge nicht im Detail erläutern (sie haben ihre eigene Dokumentation), aber eine kurze Tour durch die „Änderungen“-Ansicht (wo Sie die meiste Zeit verbringen werden) ist angebracht.

  • Links befindet sich die Liste der Repositories, die der Client verfolgt; Sie können ein Repository hinzufügen (entweder durch Klonen oder lokales Anhängen), indem Sie oben in diesem Bereich auf das "+"-Symbol klicken.

  • In der Mitte befindet sich ein Commit-Eingabebereich, in dem Sie eine Commit-Nachricht eingeben und auswählen können, welche Dateien enthalten sein sollen. Unter Windows wird die Commit-Historie direkt darunter angezeigt; unter macOS befindet sie sich auf einer separaten Registerkarte.

  • Rechts befindet sich eine Diff-Ansicht, die anzeigt, was sich in Ihrem Arbeitsverzeichnis geändert hat oder welche Änderungen im ausgewählten Commit enthalten waren.

  • Das Letzte, was zu beachten ist, ist die Schaltfläche "Sync" oben rechts, über die Sie hauptsächlich mit dem Netzwerk interagieren.

Hinweis

Sie benötigen kein GitHub-Konto, um diese Werkzeuge zu verwenden. Obwohl sie so konzipiert sind, dass sie den GitHub-Dienst und den empfohlenen Workflow hervorheben, funktionieren sie problemlos mit jedem Repository und führen Netzwerkoperationen mit jedem Git-Host durch.

Installation

GitHub für Windows und macOS kann von https://desktop.github.com/ heruntergeladen werden. Wenn die Anwendungen zum ersten Mal ausgeführt werden, führen sie Sie durch die Erstkonfiguration von Git, wie z. B. die Konfiguration Ihres Namens und Ihrer E-Mail-Adresse, und beide legen vernünftige Standardwerte für viele gängige Konfigurationsoptionen fest, wie z. B. Anmeldeinformations-Caches und CRLF-Verhalten.

Beide sind „evergreen“ – Updates werden im Hintergrund heruntergeladen und installiert, während die Anwendungen geöffnet sind. Dies beinhaltet praktischerweise eine gebündelte Version von Git, was bedeutet, dass Sie sich wahrscheinlich keine Sorgen mehr um die manuelle Aktualisierung machen müssen. Unter Windows enthält der Client eine Verknüpfung zum Starten von PowerShell mit Posh-git, worüber wir später in diesem Kapitel mehr sprechen werden.

Der nächste Schritt besteht darin, dem Werkzeug einige Repositories zur Verfügung zu stellen, mit denen es arbeiten kann. Der Client zeigt Ihnen eine Liste der Repositories, auf die Sie auf GitHub Zugriff haben, und kann diese in einem Schritt klonen. Wenn Sie bereits ein lokales Repository haben, ziehen Sie dessen Verzeichnis einfach aus dem Finder oder dem Windows Explorer in das GitHub-Client-Fenster, und es wird in die Liste der Repositories auf der linken Seite aufgenommen.

Nach der Installation und Konfiguration können Sie den GitHub-Client für viele gängige Git-Aufgaben verwenden. Der vorgesehene Workflow für dieses Werkzeug wird manchmal als „GitHub Flow“ bezeichnet. Wir behandeln dies ausführlicher in Der GitHub Flow, aber im Allgemeinen bedeutet dies, dass (a) Sie in einen Branch committen werden und (b) Sie regelmäßig mit einem Remote-Repository synchronisieren werden.

Die Branch-Verwaltung ist einer der Bereiche, in denen sich die beiden Werkzeuge unterscheiden. Unter macOS gibt es am oberen Rand des Fensters eine Schaltfläche zum Erstellen eines neuen Branches

“Create Branch” button on macOS
Abbildung 181. Schaltfläche "Branch erstellen" unter macOS

Unter Windows geschieht dies, indem Sie den Namen des neuen Branches in das Branch-Wechsel-Widget eingeben

Creating a branch on Windows
Abbildung 182. Erstellen eines Branches unter Windows

Sobald Ihr Branch erstellt ist, ist das Erstellen neuer Commits recht einfach. Nehmen Sie einige Änderungen in Ihrem Arbeitsverzeichnis vor, und wenn Sie zum GitHub-Client-Fenster wechseln, wird Ihnen angezeigt, welche Dateien sich geändert haben. Geben Sie eine Commit-Nachricht ein, wählen Sie die Dateien aus, die Sie einschließen möchten, und klicken Sie auf die Schaltfläche "Commit" (Strg+Enter oder ⌘+Enter).

Die Hauptmethode, wie Sie mit anderen Repositories über das Netzwerk interagieren, ist die Funktion "Sync". Git hat intern separate Operationen für Push, Fetch, Merge und Rebase, aber die GitHub-Clients fassen all diese in einer mehrstufigen Funktion zusammen. Hier ist, was passiert, wenn Sie auf die Schaltfläche Sync klicken

  1. git pull --rebase. Wenn dies aufgrund eines Merge-Konflikts fehlschlägt, greifen Sie auf git pull --no-rebase zurück.

  2. git push.

Dies ist die häufigste Sequenz von Netzwerkbefehlen bei der Arbeit auf diese Weise, daher spart die Zusammenfassung in einem einzigen Befehl viel Zeit.

Zusammenfassung

Diese Werkzeuge sind sehr gut für den Workflow geeignet, für den sie entwickelt wurden. Entwickler und Nicht-Entwickler gleichermaßen können innerhalb von Minuten an einem Projekt zusammenarbeiten, und viele der Best Practices für diese Art von Workflow sind in die Werkzeuge integriert. Wenn Ihr Workflow jedoch anders ist oder Sie mehr Kontrolle darüber wünschen, wie und wann Netzwerkoperationen durchgeführt werden, empfehlen wir Ihnen, einen anderen Client oder die Kommandozeile zu verwenden.

Andere GUIs

Es gibt eine Reihe anderer grafischer Git-Clients, die von spezialisierten Einzweckwerkzeugen bis hin zu Apps reichen, die versuchen, alles freizulegen, was Git kann. Die offizielle Git-Website bietet eine kuratierte Liste der beliebtesten Clients unter https://git-scm.de/downloads/guis. Eine umfassendere Liste ist auf der Git-Wiki-Seite unter https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfaces verfügbar.