-
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 Git über die Kommandozeile
- 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 Projekte teilen und aktualisieren
- 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
A2.1 Anhang B: Git in Ihre Anwendungen einbetten - Git über die Kommandozeile
Wenn Ihre Anwendung für Entwickler bestimmt ist, besteht eine gute Chance, dass sie von der Integration mit der Quellcodeverwaltung profitieren könnte. Selbst Anwendungen für Nicht-Entwickler, wie z.B. Textverarbeitungsprogramme, könnten potenziell von Versionskontrollfunktionen profitieren, und das Modell von Git eignet sich sehr gut für viele verschiedene Szenarien.
Wenn Sie Git in Ihre Anwendung integrieren müssen, haben Sie im Wesentlichen zwei Optionen: Sie können eine Shell starten und das git-Kommandozeilenprogramm aufrufen oder eine Git-Bibliothek in Ihre Anwendung einbetten. Hier behandeln wir die Integration über die Kommandozeile und mehrere der beliebtesten einbettbaren Git-Bibliotheken.
Git über die Kommandozeile
Eine Option ist, einen Shell-Prozess zu starten und das Git-Kommandozeilenwerkzeug für die Arbeit zu verwenden. Dies hat den Vorteil, dass es kanonisch ist und alle Git-Funktionen unterstützt werden. Dies ist auch ziemlich einfach, da die meisten Laufzeitumgebungen über eine relativ einfache Einrichtung zum Aufrufen eines Prozesses mit Kommandozeilenargumenten verfügen. Dieser Ansatz hat jedoch einige Nachteile.
Einer davon ist, dass die gesamte Ausgabe als reiner Text erfolgt. Das bedeutet, dass Sie das sich gelegentlich ändernde Ausgabeformat von Git parsen müssen, um Fortschritts- und Ergebnisinformationen zu lesen, was ineffizient und fehleranfällig sein kann.
Ein weiterer Nachteil ist das Fehlen einer Fehlerbehandlung. Wenn ein Repository irgendwie beschädigt ist oder der Benutzer einen fehlerhaften Konfigurationswert hat, weigert sich Git einfach, viele Operationen durchzuführen.
Noch ein weiterer Nachteil ist die Prozessverwaltung. Git verlangt von Ihnen, eine Shell-Umgebung in einem separaten Prozess zu pflegen, was unerwünschte Komplexität hinzufügen kann. Der Versuch, viele dieser Prozesse zu koordinieren (insbesondere wenn potenziell von mehreren Prozessen auf dasselbe Repository zugegriffen wird), kann eine ziemliche Herausforderung sein.