-
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 Ihre 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 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 Ihre 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 Sie das ganze Buch durchgelesen haben, haben Sie viel darüber gelernt, wie man Git auf der Kommandozeile benutzt. Sie können mit lokalen Dateien arbeiten, Ihr Repository über ein Netzwerk mit anderen verbinden und effektiv mit anderen zusammenarbeiten. Aber die Geschichte endet nicht dort; Git wird normalerweise als Teil eines größeren Ökosystems verwendet, und die Kommandozeile ist nicht immer die beste Möglichkeit, damit 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 Ihrer) neben Git funktionieren.
Grafische Schnittstellen
Die native Umgebung von Git ist das Terminal. Dort werden zuerst neue Funktionen implementiert, und nur über die Befehlszeile steht Ihnen die volle Leistung von Git zur Verfügung. Die Befehlszeile ist jedoch nicht für alle Aufgaben die beste Wahl. Manchmal benötigen Sie 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 zusammengestellte Teilmenge der Git-Funktionalität zur Verfügung, um eine bestimmte Arbeitsweise zu unterstützen, die der Autor für effektiv 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. Beachten Sie auch, dass diese grafischen Clients nichts tun können, was der Befehlszeilenclient nicht kann. In der Befehlszeile haben Sie immer noch die größte Leistung und Kontrolle, wenn Sie mit Ihren Repositorys arbeiten.
gitk
und git-gui
Wenn Sie Git installieren, erhalten Sie auch die visuellen Tools gitk
und git-gui
.
gitk
ist ein grafischer Verlaufsbetrachter.
Stellen Sie sich das wie eine leistungsstarke GUI-Shell über git log
und git grep
vor.
Dies ist das Tool, welches sie nutzen sollten, wenn sie versuchen, etwas zu finden, das in der Vergangenheit passiert ist oder wenn sie den Verlauf Ihres Projekts visualisieren wollen.
Gitk lässt sich am einfachsten über die Befehlszeile aufrufen. Geben Sie einfach eine CD in ein Git-Repository ein und geben Sie Folgendes ein:
$ 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:
![Der `gitk` Verlaufsbetrachter](png/gitk.png)
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 sehen Sie 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:
![Das `git-gui` Commit-Tool](png/git-gui.png)
git-gui
Commit-ToolLinks ist der Index. „Unstage“ Änderungen befinden sich oben, „staged“ Änderungen unten. Sie können ganze Dateien zwischen den beiden Status verschieben, indem Sie auf deren Symbole klicken. Weiterhin können Sie eine Datei zum Anzeigen auswählen, indem Sie auf ihren Namen klicken.
Oben rechts befindet sich die Diff-Ansicht, in der die Änderungen für die aktuell ausgewählte Datei angezeigt werden. Sie können einzelne Bereiche (oder einzelne Linien) 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 das letzte Commit auch ändern, indem Sie das Optionsfeld „Ändern“ aktivieren, um den Bereich „Staged Changes“ mit dem Inhalt des letzten Commits zu aktualisieren.
Anschließend können Sie 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:
![GitHub für macOS](png/github_mac.png)
![GitHub für Windows](png/github_win.png)
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 Sie die meiste Zeit verbringen werden) werden wir eingehen.
-
Auf der linken Seite befindet sich die Liste der Repositorys, 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 den 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.
-
Auf der rechten Seite befindet sich eine Diff-Ansicht, die zeigt, was in Ihrem Arbeitsverzeichnis geändert wurde oder welche Änderungen im ausgewählten Commit enthalten waren.
-
Zu guter Letzt gibt es oben rechts die Schaltfläche „Synchronisieren“. Hierrüber werden sie primär über das Netzwerk interagieren.
Anmerkung
|
Sie benötigen kein GitHub-Konto, um diese Tools verwenden zu können. Das Tool is designed, um Githubs Services und deren empfohlenen Workflow zu nuten, sie können 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, werden Sie durch alle erstmaligen Git-Einstellungen geführt, z. B. durch die Konfiguration Ihres Namens und Ihrer 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 Sie sich wahrscheinlich nicht darum kümmern müssen, sie manuell erneut zu aktualisieren. Unter Windows enthält der Client eine Verknüpfung zum Starten von PowerShell mit Posh-git, auf die 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 Ihnen eine Liste der Repositorys, auf die Sie auf GitHub zugreifen können, und kann sie in einem Schritt klonen. Wenn Sie bereits über ein lokales Repository verfügen, ziehen Sie dessen 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, können Sie den GitHub-Client für viele gängige Git-Aufgaben verwenden. Der beabsichtigte 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) Sie sich auf einen Branch festlegen und (b) sich mit einer remote Repository regelmäßig synchronisieren.
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:
![„Create Branch“ Knopf auf macOS](png/branch_widget_mac.png)
Unter Windows wird dazu der Name des neuen Branches in das Branchwechsel-Widget eingegeben:
![Einen Branch auf Windows erstellen](png/branch_widget_win.png)
Sobald Ihre Branch erstellt ist, ist das Erstellen neuer Commits ziemlich einfach. Nehmen Sie einige Änderungen in Ihrem Arbeitsverzeichnis vor. Wenn Sie zum GitHub-Client-Fenster wechseln, wird angezeigt, welche Dateien geändert wurden. Geben Sie eine Commitnachricht ein, wählen Sie die Dateien aus, die Sie einschließen möchten, und klicken Sie auf die Schaltfläche „Commit“ (Strg-Eingabe oder ⌘-Eingabe).
Die Hauptmethode für die Interaktion mit anderen Repositorys über das Netzwerk ist die Funktion „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 Sie auf die Schaltfläche „Synchronisieren“ klicken:
-
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 Folge von Netzwerkbefehlen, wenn Sie auf diese Art arbeiten. Wenn Sie sie also zu einem Befehl zusammenfassen, sparen Sie viel 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, und viele der Best Practices für diese Art von Workflow sind in die Tools integriert. Wenn Ihr Workflow jedoch anders ist oder Sie mehr Kontrolle darüber haben möchten, wie und wann Netzwerkvorgänge ausgeführt werden, empfehlen wir Ihnen, 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 finden Sie auf der Git-Wiki-Website unter https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.