-
1. Erste Schritte
- 1.1 Über Versionskontrolle
- 1.2 Eine kurze Geschichte von Git
- 1.3 Was ist Git?
- 1.4 Die Kommandozeile
- 1.5 Git installieren
- 1.6 Erstmalige Git-Einrichtung
- 1.7 Hilfe bekommen
- 1.8 Zusammenfassung
-
2. Git Grundlagen
-
3. Git Branching
- 3.1 Branches im Überblick
- 3.2 Grundlegendes 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 Generieren Ihres SSH-Public-Keys
- 4.4 Einrichten des Servers
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Drittanbieter-Hosting-Optionen
- 4.10 Zusammenfassung
-
5. Verteiltes Git
-
6. GitHub
-
7. Git-Werkzeuge
- 7.1 Revisionsauswahl
- 7.2 Interaktives Staging
- 7.3 Stashing und Bereinigen
- 7.4 Ihre Arbeit signieren
- 7.5 Suchen
- 7.6 Historie umschreiben
- 7.7 Reset entmystifiziert
- 7.8 Fortgeschrittenes Merging
- 7.9 Rerere
- 7.10 Debugging mit Git
- 7.11 Submodule
- 7.12 Bundling
- 7.13 Ersetzen
- 7.14 Credential-Speicher
- 7.15 Zusammenfassung
-
8. Git anpassen
-
9. Git und andere Systeme
- 9.1 Git als Client
- 9.2 Migration zu Git
- 9.3 Zusammenfassung
-
10. Git-Interna
- 10.1 Plumbing und Porcelain
- 10.2 Git-Objekte
- 10.3 Git-Referenzen
- 10.4 Packfiles
- 10.5 Die Refspec
- 10.6 Übertragungsprotokolle
- 10.7 Wartung und Datenwiederherstellung
- 10.8 Umgebungsvariablen
- 10.9 Zusammenfassung
-
Anhang A: Git in anderen Umgebungen
- A1.1 Grafische Oberflächen
- 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
-
Anhang B: Git in Ihre Anwendungen einbetten
- A2.1 Kommandozeilen-Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
Anhang C: Git-Befehle
- A3.1 Einrichtung und Konfiguration
- A3.2 Projekte abrufen und erstellen
- A3.3 Grundlegendes Snapshotting
- A3.4 Branching und Merging
- A3.5 Teilen und Aktualisieren von Projekten
- A3.6 Inspektion und Vergleich
- A3.7 Debugging
- A3.8 Patching
- A3.9 E-Mail
- A3.10 Externe Systeme
- A3.11 Administration
- A3.12 Plumbing-Befehle
A3.5 Anhang C: Git-Befehle - Teilen und Aktualisieren von Projekten
Projekte teilen und aktualisieren
Es gibt nicht sehr viele Befehle in Git, die auf das Netzwerk zugreifen; fast alle Befehle arbeiten mit der lokalen Datenbank. Wenn Sie bereit sind, Ihre Arbeit zu teilen oder Änderungen von extern herunterzuladen, gibt es eine Handvoll Befehle, die mit entfernten Repositories zu tun haben.
git fetch
Der Befehl git fetch kommuniziert mit einem entfernten Repository und holt alle Informationen, die in diesem Repository vorhanden sind und nicht in Ihrem aktuellen, und speichert sie in Ihrer lokalen Datenbank.
Wir betrachten diesen Befehl zuerst in Abrufen und Herunterladen von Ihren Remotes und sehen weiterhin Beispiele für seine Verwendung in Remote-Branches.
Wir verwenden ihn auch in mehreren der Beispiele in Beitragen zu einem Projekt.
Wir verwenden ihn, um eine einzelne spezifische Referenz abzurufen, die außerhalb des Standardbereichs liegt, in Pull-Request-Referenzen und wir sehen, wie man aus einem Bundle abruft, in Bundling.
Wir richten hochgradig angepasste Refspecs ein, um git fetch etwas anderes als die Standardeinstellung machen zu lassen, in Die Refspec.
git pull
Der Befehl git pull ist im Grunde eine Kombination aus den Befehlen git fetch und git merge, wobei Git vom angegebenen Remote abruft und dann sofort versucht, es mit dem aktuellen Branch zu zusammenzuführen.
Wir führen ihn kurz in Abrufen und Herunterladen von Ihren Remotes ein und zeigen, wie man sieht, was er zusammenführen wird, wenn Sie ihn ausführen, in Untersuchen eines Remotes.
Wir sehen auch, wie man ihn verwendet, um bei Rebase-Schwierigkeiten zu helfen, in Rebase, wenn Sie Rebase verwenden.
Wir zeigen, wie man ihn mit einer URL verwendet, um Änderungen einmalig herunterzuladen, in Abrufen von Remote-Branches.
Schließlich erwähnen wir sehr kurz, dass Sie die Option --verify-signatures verwenden können, um zu überprüfen, ob Commits, die Sie abrufen, mit GPG signiert wurden, in Commits signieren.
git push
Der Befehl git push wird verwendet, um mit einem anderen Repository zu kommunizieren, zu berechnen, was Ihre lokale Datenbank hat, was das entfernte nicht hat, und dann den Unterschied in das andere Repository zu übertragen. Er erfordert Schreibzugriff auf das andere Repository und wird daher normalerweise irgendwie authentifiziert.
Wir betrachten den Befehl git push zuerst in Pushing zu Ihren Remotes. Hier behandeln wir die Grundlagen des Pushens eines Branches in ein entferntes Repository. In Pushen gehen wir etwas tiefer auf das Pushen spezifischer Branches ein und in Tracking-Branches sehen wir, wie man Tracking-Branches einrichtet, um automatisch zu pushen. In Entfernen von Remote-Branches verwenden wir das Flag --delete, um einen Branch auf dem Server mit git push zu löschen.
In Beitragen zu einem Projekt sehen wir mehrere Beispiele für die Verwendung von git push, um Arbeit an Branches über mehrere Remotes hinweg zu teilen.
Wir sehen, wie man ihn verwendet, um von Ihnen erstellte Tags mit der Option --tags zu teilen, in Teilen von Tags.
In Veröffentlichen von Submodul-Änderungen verwenden wir die Option --recurse-submodules, um zu überprüfen, ob die Arbeit aller unserer Submodule veröffentlicht wurde, bevor wir das Superprojekt pushen, was bei der Verwendung von Submodulen sehr hilfreich sein kann.
In Andere Client-Hooks sprechen wir kurz über den Hook pre-push, ein Skript, das wir einrichten können, um vor dem Abschluss eines Pushs ausgeführt zu werden, um zu überprüfen, ob er erlaubt werden soll.
Schließlich sehen wir uns in Pushen von Refspecs an, wie man mit einer vollständigen Refspec pusht, anstatt der allgemeinen Kurzformen, die normalerweise verwendet werden. Dies kann Ihnen helfen, sehr genau zu bestimmen, welche Arbeit Sie teilen möchten.
git remote
Der Befehl git remote ist ein Verwaltungs-Tool für Ihre Aufzeichnungen von entfernten Repositories. Er ermöglicht es Ihnen, lange URLs als kurze Handles zu speichern, wie z. B. "origin", damit Sie sie nicht ständig eingeben müssen. Sie können mehrere davon haben, und der Befehl git remote wird verwendet, um sie hinzuzufügen, zu ändern und zu löschen.
Dieser Befehl wird detailliert in Arbeiten mit Remotes behandelt, einschließlich des Auflistens, Hinzufügens, Entfernens und Umbenennens.
Er wird auch in fast jedem nachfolgenden Kapitel des Buches verwendet, jedoch immer im Standardformat git remote add <name> <url>.
git archive
Der Befehl git archive wird verwendet, um eine Archivdatei eines bestimmten Snapshots des Projekts zu erstellen.
Wir verwenden git archive, um ein Tarball eines Projekts zum Teilen zu erstellen, in Vorbereiten einer Veröffentlichung.
git submodule
Der Befehl git submodule wird verwendet, um externe Repositories innerhalb von normalen Repositories zu verwalten. Dies kann für Bibliotheken oder andere Arten von gemeinsam genutzten Ressourcen sein. Der Befehl submodule hat mehrere Unterbefehle (add, update, sync usw.) zur Verwaltung dieser Ressourcen.
Dieser Befehl wird nur erwähnt und vollständig in Submodule behandelt.