-
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
10.1 Git Interna - Basisbefehle und Standardbefehle (Plumbing and Porcelain)
Möglicherweise bist du von einem der vorherigen Kapitel direkt zu diesem Kapitel gesprungen. Oder aber du bist jetzt hier gelandet, nachdem du das gesamte Buch chronologisch bis zu diesem Punkt gelesen hast. Wie auch immer, wir werden hier das Innenleben und die Implementierung von Git behandeln. Wir finden, dass das Verstehen dieser Informationen von grundlegender Bedeutung ist, um zu verstehen, wie hilfreich und extrem leistungsfähig Git ist. Andere haben jedoch argumentiert, dass es für Anfänger verwirrend und unnötig komplex sein kann. Daher haben wir diese Informationen zum letzten Kapitel des Buches gemacht, damit du sie früher oder später in deinem Lernprozess lesen kannst. Wir überlassen es dir, das zu entscheiden.
Jetzt wo du hier bist, lass uns anfangen. Erstens, wenn es noch nicht klar ist, ist Git grundsätzlich ein inhalts-adressierbares Dateisystem mit einer aufgesetzten VCS-Benutzeroberfläche. Du wirst in Kürze mehr darüber erfahren, was dies bedeutet.
In den Anfängen von Git (meist vor 1.5) war die Benutzerschnittstelle sehr viel komplexer, da dieses Dateisystem mehr im Vordergrund stand als ein hochglänzendes VCS. In den letzten Jahren wurde die Benutzerschnittstelle weiterentwickelt, bis sie so aufgeräumt und benutzerfreundlich ist wie in vielen anderen Systemen auch. Die Vorurteile gegenüber der früheren Git-Benutzerschnittstelle, die komplex und schwierig zu erlernen war, blieben jedoch erhalten.
Die inhalts-adressierbare Dateisystemschicht ist erstaunlich abgefahren, deshalb werden wir es als Erstes in diesem Kapitel behandeln. Anschließend lernst du die Transportmechanismen und die Repository-Wartungsaufgaben kennen, mit denen du dich möglicherweise befassen musst.
Basisbefehle und Standardbefehle (Plumbing and Porcelain)
In diesem Buch wird in erster Linie beschrieben, wie Git mit etwa 30 Standardbefehlen wie checkout
, branch
, remote
usw. verwendet wird.
Git war ursprünglich ein Werkzeug für ein Versionskontrollsystem und kein benutzerfreundliches VCS. Somit verfügt es über eine Reihe von Basisbefehlen, die auf niedriger Ebene ausgeführt werden und so konzipiert sind, dass sie im UNIX-Stil verkettet oder über Skripte aufgerufen werden können.
Diese Befehle werden im Allgemeinen als Basisbefehle von Git bezeichnet, während die benutzerfreundlicheren Befehle als Standardbefehle bezeichnet werden.
Wie du bereits bemerkt hast, befassen sich die ersten neun Kapitel dieses Buches fast ausschließlich mit Standardbefehlen. In diesem Kapitel wirst du dich jedoch hauptsächlich mit den Basisbefehle der niedrigeren Ebene befassen. Diese ermöglichen dir den Zugriff auf das Innenleben von Git und helfen dir dabei zu demonstrieren, wie und warum Git das tut, was es tut. Viele dieser Befehle sollten nicht manuell in der Befehlszeile verwendet werden, sondern als Bausteine für neue Tools und benutzerdefinierte Skripts genutzt werden.
Wenn du git init
in einem neuen oder vorhandenen Verzeichnis ausführst, erstellt Git das .git
Verzeichnis, in dem sich fast alles befindet, was Git speichert und bearbeitet.
Wenn du dein Repository sichern oder klonen möchtest, erhältst du beim Kopieren dieses einzelnen Verzeichnisses fast alles, was du benötigst.
Dieses gesamte Kapitel befasst sich im Wesentlichen mit dem, was du in diesem Verzeichnis finden kannst.
So sieht ein neu initialisiertes .git
-Verzeichnis normalerweise aus:
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
Abhängig von deiner Git-Version siehst du dort möglicherweise zusätzlichen Inhalt, aber dies ist ein neu erstelltes git init
Repository – das solltest du standardmäßig sehen.
Die description
Datei wird nur vom GitWeb-Programm verwendet, du brauchst sie also nicht weiter zu beachten.
Die config
Datei enthält deine projektspezifischen Konfigurationsoptionen, und das info
Verzeichnis enthält eine globale Ausschlussdatei für ignorierte Muster, die du nicht in einer .gitignore
Datei verfolgen möchtest.
Das hooks
Verzeichnis enthält deine client- oder serverseitigen Hook-Skripte, die ausführlich in Git Hooks beschrieben werden.
Dies hinterlässt vier wichtige Einträge: die HEAD
– und (noch zu erstellenden) 'index` Dateien sowie die objects
– und refs
Verzeichnisse.
Dies sind die Kernelemente von Git.
Das objects
-Verzeichnis speichert den gesamten Inhalt für deine Datenbank, das refs
Verzeichnis speichert Zeiger auf Commit-Objekte in diesen Daten (Branches, Tags, Remotes, usw.) und die HEAD
Datei zeigt auf den Branch, den du gerade ausgecheckt hast. In der index
Datei speichert Git deine Staging-Bereichsinformationen.
Du wirst dir nun jeden dieser Abschnitte genauer ansehen, um zu sehen, wie Git funktioniert.