-
1. Erste Schritte
-
2. Git Grundlagen
-
3. Git Branching
- 3.1 Branches auf einen Blick
- 3.2 Einfaches Branching und Merging
- 3.3 Branch-Management
- 3.4 Branching-Workflows
- 3.5 Remote-Branches
- 3.6 Rebasing
- 3.7 Zusammenfassung
-
4. Git auf dem Server
- 4.1 Die Protokolle
- 4.2 Git auf einem Server einrichten
- 4.3 Erstellung eines SSH-Public-Keys
- 4.4 Einrichten des Servers
- 4.5 Git-Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Von Drittanbietern gehostete Optionen
- 4.10 Zusammenfassung
-
5. Verteiltes Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revisions-Auswahl
- 7.2 Interaktives Stagen
- 7.3 Stashen und Bereinigen
- 7.4 Deine Arbeit signieren
- 7.5 Suchen
- 7.6 Den Verlauf umschreiben
- 7.7 Reset entzaubert
- 7.8 Fortgeschrittenes Merging
- 7.9 Rerere
- 7.10 Debuggen mit Git
- 7.11 Submodule
- 7.12 Bundling
- 7.13 Replace (Ersetzen)
- 7.14 Anmeldeinformationen speichern
- 7.15 Zusammenfassung
-
8. Git einrichten
- 8.1 Git Konfiguration
- 8.2 Git-Attribute
- 8.3 Git Hooks
- 8.4 Beispiel für Git-forcierte Regeln
- 8.5 Zusammenfassung
-
9. Git und andere VCS-Systeme
- 9.1 Git als Client
- 9.2 Migration zu Git
- 9.3 Zusammenfassung
-
10. Git Interna
-
A1. Anhang A: Git in anderen Umgebungen
- A1.1 Grafische Schnittstellen
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git in Sublime Text
- A1.6 Git in Bash
- A1.7 Git in Zsh
- A1.8 Git in PowerShell
- A1.9 Zusammenfassung
-
A2. Anhang B: Git in deine Anwendungen einbetten
- A2.1 Die Git-Kommandozeile
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Anhang C: Git Kommandos
- A3.1 Setup und Konfiguration
- A3.2 Projekte importieren und erstellen
- A3.3 Einfache Snapshot-Funktionen
- A3.4 Branching und Merging
- A3.5 Projekte gemeinsam nutzen und aktualisieren
- A3.6 Kontrollieren und Vergleichen
- A3.7 Debugging
- A3.8 Patchen bzw. Fehlerkorrektur
- A3.9 E-mails
- A3.10 Externe Systeme
- A3.11 Administration
- A3.12 Basisbefehle
A1.1 Anhang A: Git in anderen Umgebungen - Grafische Schnittstellen
Wenn du das ganze Buch durchgelesen hast, hast du viel darüber gelernt, wie man Git auf der Kommandozeile benutzt. Du kannst mit lokalen Dateien arbeiten, dein 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 die Kommandozeile ist nicht immer die beste Möglichkeit, umd mit Git zu arbeiten. Jetzt werden wir uns einige der anderen Arten von Umgebungen ansehen, in denen Git nützlich sein kann, und wie andere Anwendungen (einschließlich Deiner) neben Git funktionieren.
Grafische Schnittstellen
Die native Umgebung von Git ist das Terminal bzw. die Befehlszeile. Dort werden zuerst neue Funktionen implementiert, und nur über die Befehlszeile steht dir die volle Leistung von Git zur Verfügung. Die Befehlszeile ist jedoch nicht für alle Aufgaben die beste Wahl. Manchmal benötigst du eine visuelle Darstellung, und einige Benutzer sind mit einer grafischen -Oberfläche viel besser vertraut.
Es ist wichtig zu beachten, dass unterschiedliche Schnittstellen auf unterschiedliche Workflows zugeschnitten sind. Einige Clients stellen nur eine sorgfältig ausgewählte Teilmenge der Git-Funktionalität zur Verfügung, um eine bestimmte Arbeitsweise zu unterstützen, die der Client-Ersteller für nützlich hält. Mit diesem Hintergrund kann keines dieser Tools als „besser“ bezeichnet werden als die anderen, sie sind einfach besser für den beabsichtigten Zweck geeignet. Beachte, dass diese grafischen Clients nichts tun können, was der Befehlszeilenclient nicht kann. In der Befehlszeile hast du immer noch die größte Leistung und Kontrolle, wenn du mit deinem Repositorys arbeitest.
gitk
und git-gui
Wenn du Git installierst, erhältst du auch die grafischen Tools gitk
und git-gui
.
gitk
ist ein grafischer Verlaufsbetrachter.
Du kannst dir das wie eine leistungsstarke GUI-Shell über git log
und git grep
vorstellen.
Dies ist das Tool, welches du nutzen solltest, wenn du versuchst, etwas zu finden, das in der Vergangenheit passiert ist oder wenn du den Verlauf deines Projektes visualisieren willst.
Gitk lässt sich am einfachsten über die Befehlszeile aufrufen. Gib einfach eine CD in ein Git-Repository ein und führe folgendes Kommando aus:
$ gitk [git log options]
Gitk akzeptiert viele Befehlszeilenoptionen, von denen die meisten an die zugrunde liegende Aktion git Log
übergeben werden.
Wahrscheinlich eines der nützlichsten ist das --all
Flag, das gitk anweist, Commits anzuzeigen, die von jedem Ref erreichbar sind, nicht nur von HEAD.
Die Benutzeroberfläche von Gitk sieht folgendermaßen aus:
gitk
VerlaufsbetrachterIm oberen Teil sieht man etwas, das ein bisschen wie die Ausgabe von git log --graph
aussieht. Jeder Punkt steht für ein Commit, die Linien für übergeordnete Beziehungen und Refs werden als farbige Kästchen angezeigt.
Der gelbe Punkt steht für HEAD und der rote Punkt für Änderungen, die noch nicht festgeschrieben wurden.
Unten siehst du eine Ansicht des ausgewählten Commits. Die Kommentare und Patches auf der linken Seite und eine zusammenfassende Ansicht auf der rechten Seite.
Dazwischen befindet sich eine Sammlung von Steuerelementen, die zum Durchsuchen des Verlaufs verwendet werden können.
git-gui
hingegen ist in erster Linie ein Werkzeug zum Erstellen von Commits.
Es kann ebenfalls sehr einfach über die Befehlszeile aufgerufen werden:
$ git gui
Es sieht in etwa so aus:
git-gui
Commit-ToolLinks ist der Index. „Unstage“ Änderungen befinden sich oben, „staged“ Änderungen unten. Du kannst ganze Dateien zwischen den beiden Status verschieben, indem du auf deren Symbole klickst. Weiterhin kannst du eine Datei zum Anzeigen auswählen, indem du auf deinen Namen klickst.
Oben rechts befindet sich die Diff-Ansicht, in der die Änderungen für die aktuell ausgewählte Datei angezeigt werden. Du kannst einzelne Bereiche (oder einzelne Linien) stagen, indem du mit der rechten Maustaste in diesen Bereich klickst.
Unten rechts befindet sich der Nachrichten- und Aktionsbereich.
Gib deine Nachricht in das Textfeld ein und klicke auf „Commit“, um etwas Ähnliches wie git commit
zu tun.
Du kanst den letzten Commit auch ändern, indem du das Optionsfeld „Ändern“ aktivierst, um den Bereich „Staged Changes“ mit dem Inhalt des letzten Commits zu aktualisieren.
Anschließend kannst du einfach einige Änderungen aktivieren oder deaktivieren, die Commit-Nachricht ändern und erneut auf „Commit“ klicken, um den alte commit durch einen neuen zu ersetzen.
gitk
und git-gui
sind Beispiele für aufgabenorientierte Tools.
Jedes von ihnen ist auf einen bestimmten Zweck zugeschnitten (Anzeigen des Verlaufs bzw. Erstellen von Commits) und lässt die für diese Aufgabe nicht erforderlichen Funktionen aus.
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 Tools. Anstatt alle Funktionen von Git zu implementieren, konzentrieren sie sich stattdessen auf eine Reihe häufig verwendeter Funktionen, die gut zusammenarbeiten. Sie sehen so aus:
Sie sind so konzipiert, dass sie sehr ähnlich aussehen und funktionieren. Daher werden wir sie in diesem Kapitel wie ein einziges Produkt behandeln. Wir werden keinen detaillierten Überblick über diese Tools geben (sie haben ihre eigene Dokumentation), aber kurz auf die Ansicht „Änderungen“ (in der du die meiste Zeit verbringen wirst) eingehen.
-
Auf der linken Seite befindet sich die Liste der Repositorys, die der Client verfolgt. Du kannst ein Repository hinzufügen (entweder durch Klonen oder lokales Anhängen), indem du oben in diesem Bereich auf das Symbol "+" klickst.
-
In der Mitte befindet sich ein Commit-Eingabebereich, in den du eine Commit-Nachricht eingibst und auswählen kannst, welche Dateien enthalten sein sollen. Unter Windows wird die Commit-Historie direkt darunter angezeigt. Unter macOS befindet sie sich auf einer separaten Registerkarte.
-
Auf der rechten Seite befindet sich eine Diff-Ansicht, die zeigt, was in deinem Arbeitsverzeichnis geändert wurde oder welche Änderungen im ausgewählten Commit enthalten waren.
-
Zu guter Letzt gibt es oben rechts die Schaltfläche „Synchronisieren“. Damit kannst du mit dem Netzwerk interagieren.
Anmerkung
|
Du benötigst kein GitHub-Konto, um diese Tools verwenden zu können. Das Tool is designed, um Githubs Services und deren empfohlenen Workflow zu nuten. Du kannst damit jedoch problemlos mit jedem Repository arbeiten und Netzwerkoperationen mit jedem Git-Host ausführen. |
Installation
GitHub für Windows kann von https://windows.github.com und GitHub für macOS von https://mac.github.com heruntergeladen werden. Wenn die Anwendungen zum ersten Mal ausgeführt werden, wirst du durch alle erstmaligen Git-Einstellungen geführt, z. B. durch die Konfiguration deines Namens und deiner E-Mail-Adresse. Beide richten vernünftige Standardeinstellungen für viele gängige Konfigurationsoptionen ein, z. B. Caches für Anmeldeinformationen und CRLF-Verhalten.
Beides sind „Evergreen“-Programme – Alle Updates werden automatisch heruntergeladen und im Hintergrund installiert, sobald die Anwendungen geöffnet sind. Dies beinhaltet eine gebündelte Version von Git, was bedeutet, dass du dich wahrscheinlich nicht darum kümmern musst, sie manuell zu aktualisieren. Unter Windows enthält der Client eine Verknüpfung zum Starten von PowerShell mit Posh-git, auf das wir später in diesem Kapitel näher eingehen werden.
Der nächste Schritt besteht darin, dem Tool einige Repositorys zur Verfügung zu stellen, mit denen es arbeiten kann. Der Client zeigt dir eine Liste der Repositorys, auf die du auf GitHub zugreifen kannst, und kann sie in einem Schritt klonen. Wenn du bereits über ein lokales Repository verfügst, ziehst du das Verzeichnis einfach aus dem Finder oder Windows Explorer in das GitHub-Clientfenster. Es wird dann in die Liste der Repositorys auf der linken Seite aufgenommen.
Empfohlener Workflow
Sobald es installiert und konfiguriert ist, kannst du den GitHub-Client für viele gängige Git-Aufgaben verwenden. Der vorgegebene Workflow für dieses Tool wird manchmal als „GitHub Flow“ bezeichnet. Wir behandeln dies ausführlicher in Der GitHub Workflow, aber der Kern des Ganzen ist, dass (a) du dich auf einen Branch festlegst und (b) dich mit einer remote Repository regelmäßig synchronisierst.
Das Branchmanagement ist einer der Bereiche, in denen sich die beiden Tools unterscheiden. Unter macOS gibt es oben im Fenster eine Schaltfläche zum Erstellen eines neuen Branches:
Unter Windows wird dazu der Name des neuen Branches in das Branchwechsel-Widget eingegeben:
Sobald dein Branch erstellt ist, ist das Erstellen neuer Commits ziemlich einfach. Nimm einige Änderungen in deinem Arbeitsverzeichnis vor. Wenn du zum GitHub-Client-Fenster wechselst, wird angezeigt, welche Dateien geändert wurden. Gib eine Commitnachricht ein, wähle die Dateien aus, die du einschließen möchtest, und klicke auf die Schaltfläche „Commit“ (Strg-Eingabe oder ⌘-Eingabe).
Die Funktion für die Interaktion mit anderen Repositorys über das Netzwerk ist „Synchronisieren“. Git verfügt intern über separate Vorgänge zum Verschieben, Abrufen, Zusammenführen und Rebasen. Die GitHub-Clients reduzieren jedoch alle diese Vorgänge zu einer mehrstufigen Funktion. Folgendes passiert, wenn du auf die Schaltfläche „Synchronisieren“ klickst:
-
git pull --rebase
. Wenn das wegen eines merge Konfliktes fehlschlägt, gehe zurück zugit pull --no-rebase
. -
git push
.
Dies ist die häufigste Sequenz von Netzwerkbefehlen, wenn du damit arbeitest. Wenn du sie also zu einem Befehl zusammenfasst, sparst du eine Menge Zeit.
Zusammenfassung
Diese Tools eignen sich sehr gut für den Workflow, für den sie entwickelt wurden. Entwickler und Nichtentwickler können innerhalb von Minuten an einem Projekt zusammenarbeiten. Viele Best Practices für diese Art von Workflow sind in die Tools integriert. Wenn dein Workflow jedoch anders ist oder du mehr Kontrolle darüber haben möchtest, wie und wann Netzwerkvorgänge ausgeführt werden, empfehlen wir dir, einen anderen Client oder die Befehlszeile zu verwenden.
Andere GUIs
Es gibt eine Reihe anderer grafischer Git-Clients, die von spezialisierten Einzweck-Tools bis hin zu Apps reichen, die versuchen, alles zu beinhalten, was Git kann. Die offizielle Git-Website enthält eine kuratierte Liste der beliebtesten Clients unter https://git-scm.com/downloads/guis. Eine umfassendere Liste findest du auf der Git-Wiki-Website unter https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.