Git
Chapters ▾ 2nd Edition

10.1 Git Interna - Basisbefehle und Standardbefehle (Plumbing and Porcelain)

Sie sind möglicherweise von einem der vorherigen Kapitel direkt zu diesem Kapitel gesprungen. Oder aber Sie sind jetzt hier gelandet, nachdem Sie das gesamte Buch chronologisch bis zu diesem Punkt gelesen haben. Ganz egal, wir 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 Sie sie früh oder später in Ihrem Lernprozess lesen können. Wir überlassen es Ihnen, das zu entscheiden.

Jetzt wo sie hier sind, lassen sie uns anfangen. Erstens, wenn es noch nicht klar ist, ist Git grundsätzlich ein inhaltsadressierbares Dateisystem mit einer aufgesetzten VCS-Benutzeroberfläche. Sie werden in Kürze mehr darüber erfahren, was dies bedeutet.

In den Anfängen von Git (meist vor 1.5) war die Benutzeroberfläche sehr viel komplexer, da dieses Dateisystem mehr im Vordergrund stand als ein hochglänzendes VCS. In den letzten Jahren wurde die Benutzeroberfläche weiterentwickelt, bis sie so aufgeräumt und benutzerfreundlich ist wie in vielen anderen Systemen auch. Die Vorurteile gegenüber der früheren Git-Benutzeroberfläche, die komplex und schwierig zu erlernen war, blieben jedch erhalten

Die inhaltsadressierbare Dateisystemschicht ist erstaunlich abgefahren, deshalb werden wir es als erstes in diesem Kapitel behandeln. Anschließend lernen Sie die Transportmechanismen und die Repository-Wartungsaufgaben kennen, mit denen Sie sich möglicherweise befassen müssen.

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 Sie bereits bemerkt haben, befassen sich die ersten neun Kapitel dieses Buches fast ausschließlich mit Standardbefehlen. In diesem Kapitel werden Sie sich jedoch hauptsächlich mit den Basisbefehle der niedrigeren Ebene befassen. Diese ermöglichen Ihnen den Zugriff auf das Innenleben von Git und helfen Ihnen 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 Sie git init in einem neuen oder vorhandenen Verzeichnis ausführen, erstellt Git das .git-Verzeichnis, in dem sich fast alles befindet, was Git speichert und bearbeitet. Wenn Sie Ihr Repository sichern oder klonen möchten, erhalten Sie beim Kopieren dieses einzelnen Verzeichnisses fast alles, was Sie benötigen. Dieses gesamte Kapitel befasst sich im Wesentlichen mit dem, was Sie in diesem Verzeichnis sehen können. So sieht ein neu initialisiertes .git -Verzeichnis normalerweise aus:

$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/

Abhängig von Ihrer Git-Version sehen Sie dort möglicherweise zusätzlichen Inhalt, aber dies ist ein neu erstelltes git init-Repository – das sehen sie standardmäßig. Die description-Datei wird nur vom GitWeb-Programm verwendet, machen Sie sich also keine Sorgen darum. Die config-Datei enthält Ihre projektspezifischen Konfigurationsoptionen, und das info-Verzeichnis enthält eine globale Ausschlussdatei (excludes für ignorierte Muster, die Sie nicht in einer .gitignore-Datei verfolgen möchten. Das hooks-Verzeichnis enthält Ihre 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 Ihre Datenbank, das refs-Verzeichnis speichert Zeiger auf Commit-Objekte in diesen Daten (Zweige, Tags, Remotes, usw.) und die HEAD-Datei zeigt auf den Zweig, den Sie gerade ausgecheckt haben. In der index-Datei speichert Git Ihre Staging-Bereichsinformationen. Sie werden sich nun jeden dieser Abschnitte genauer ansehen, um zu sehen, wie Git funktioniert.