Git ist das am weitesten verbreitete System zur Versionskontrolle und zum Teilen von Code. Wenn Sie bei der Erstellung von Open-Source-Software mithelfen oder in einem professionellen Team arbeiten möchten, ist das Verstehen von Git ein Muss.
In einer Reihe von Git-Kursen zu Envato Tuts + habe ich einige der wichtigsten Git-Konzepte erläutert, die alle mit hilfreichen Animationen veranschaulicht wurden.
In diesem Video erfahren Sie mehr über die drei Bäume: den HEAD, den Index und das Arbeitsverzeichnis. Sehen Sie sich an, wie ich die Rolle eines jeden erkläre und wie sie interagieren, wenn Sie Code aktualisieren und festlegen.
Um besser zu verstehen, wie Git arbeitet, können wir die Metapher der drei Bäume verwenden. Diese Bäume sind verschiedene Dateisammlungen.
Für den Workflow zum Hinzufügen und Abrufen von Commits verwendet Git drei verschiedene Versionen von Dateien:
Jeder dieser Bäume hat einen anderen Job: einen Baum zum Schreiben von Änderungen, einen Baum zum Stufensitz und einen, der auf Ihren letzten Commit für einen Zweig in Ihrem Git-Repo zeigt.
Dateien, deren Inhalt geändert werden kann, befinden sich in Ihrem Arbeitsverzeichnis. Dateien, die in Ihrem Index abgelegt werden, werden vorbereitet, in ein Commit-Objekt verpackt zu werden. Diese Commits werden in Ihrem Git-Repository gespeichert.
Bereits festgeschriebene Dateien sind komprimierte Dateien. Sie werden durch eine SHA-1, eine kryptografische Hashfunktion, gehasht. Beide Dateiversionen im Index und Commit selbst werden im Git-Repo gespeichert, bei dem es sich einfach um ein .git-Pfarrhaus auf der Stammebene Ihres Wraps handelt.
Das Arbeitsverzeichnis stellt die tatsächlichen Dateien im Dateisystem Ihres Computers dar, die Ihrem Code-Editor zum Anwenden von Änderungen zur Verfügung stehen. Das Arbeitsverzeichnis ist eine Version eines bestimmten Commits, eine bestimmte Momentaufnahme eines Projekts, das Sie ausgecheckt haben. Es ist die Version Ihres Git-Verlaufs, auf die HEAD zu einem bestimmten Zeitpunkt zeigt.
"Auschecken" bedeutet, dass Sie die dekomprimierten Versionen von Dateien haben, die aus Ihrem Git-Repository abgerufen wurden und zur Bearbeitung verfügbar sind. Der Index repräsentiert, was verfolgt wird. Sie können auch sagen, dass es sich um eine Liste aller Dateien handelt, die für Ihr Git-Repository relevant sind.
Der Index enthält mehrere Namen. Wenn Leute über den Bereitstellungsbereich, bereitgestellte Dateien, den Cache oder den Verzeichnis-Cache sprechen, sprechen sie alle über den Index. Sie können den Index als Entwurfsbereich für Ihren nächsten Commit anzeigen, einen temporären Bereich, um den nächsten Commit vorzubereiten.
HEAD ist der Teil von git, der auf Ihre Zweige verweist, wie der Hauptzweig standardmäßig. Es ist eine Referenz, und es hat eine ziemlich einfache, aber enorm wichtige Aufgabe. HEAD verweist auf den aktuell ausgecheckten Zweig, und dieser Punkt verweist wiederum auf den letzten Commit aus diesem Zweig. HEAD kann sich nicht nur zeitlich verschieben (wenn Sie vorherige Commits auschecken), sondern auch, wenn Sie neue Zweige erstellen oder einfach zu anderen Zweigen wechseln.
Es ist auch der Punkt in Ihrem Git-Verlauf, an dem Sie Ihr nächstes Commit platzieren können, das übergeordnete Element für Ihr nächstes Commit. Bei jedem neuen Commit wird der Verweis auf den momentan ausgecheckten Zweig, den Master-Zweig, ersetzt.
Tatsächlich ist HEAD eine Referenz, die sich häufig ändert und auf zwei Dinge hinweist: den Zweig selbst und dadurch das letzte Commit für diesen Zweig.
Schauen wir uns den Workflow im Umgang mit Dateien in Git genauer an. Es ist wichtig zu verstehen, wie all diese Teile zusammenpassen. Danach haben Sie viel mehr Zeit, um sich mit den fortgeschritteneren Funktionen und Konzepten in Git vertraut zu machen.
Hier ist ein Beispiel:
In diesem Beispiel haben wir zwei Versionen unserer Datei festgelegt. Und Sie können sehen, dass die Versionen im Repo, der Index und das Arbeitsverzeichnis ein und dasselbe sind. Da diese Dateien bereits protokolliert werden, erkennt Git alle Unterschiede, wenn Sie eine dieser protokollierten Dateien im Arbeitsverzeichnis ändern.
Wenn Sie das ausführen Git-Status
Wenn Sie den Befehl ausführen, sehen Sie eine Liste der Dateien, die geändert wurden, und ist rot eingefärbt. Dies weist darauf hin, dass es Unterschiede zwischen Ihrem Arbeitsverzeichnis (dargestellt durch den Code in Ihrem Code-Editor) und Ihrem Index gibt, das Versionen von Dateien eines bestimmten Commits darstellt, meistens das letzte Commit.
Sie können jetzt das ausführen git add
Befehl, um diese Änderungen aus dem Arbeitsverzeichnis in den Index zu übernehmen, in dem Sie die Dateien bereitgestellt haben. Git-Status
zeigt dann die Dateien an, die dem Index in grün hinzugefügt sind. Dies bedeutet, dass Ihre Änderungen bereit sind, in ein neues Commit gepackt zu werden, auf das HEAD zeigen und darauf aufbauen kann.
Eine grüne Liste von Dateien bedeutet einfach, dass die Versionen der bereitgestellten Dateien im Index sich von den Versionen der Dateien unterscheiden, die zuvor bereits festgeschrieben wurden. Wenn du rennst git begehen
, Diese bereitgestellten Dateien werden in ein neues Commit-Objekt eingefügt. Das git begehen
Der Befehl speichert die tatsächlichen Dateinamen, den Inhalt jeder Datei, die Autoreninformationen, Metadaten usw. in einem neuen Objekt.
Dieses Commit-Objekt, das jetzt in einem lebt .git
Verzeichnis in Ihrem Repo, wird die neue Referenz sein, auf die HEAD zeigt. Es weist auf frühere Commits hin, in gewisser Weise die Spitze des Eisbergs. Nachdem wir unser Commit-Objekt erstellt haben, befinden wir uns wieder am Anfang des Zyklus.
Das Commit, auf das HEAD im Repo verweist, stimmt wieder mit den Versionen im Index und dem Arbeitsverzeichnis überein, das bereit ist, damit neue Änderungen bereitgestellt und festgeschrieben werden. Ende der Geschichte.
Wenn Sie dies als hilfreich empfunden haben, sollten Sie sich weitere Git-Kurse anschauen?
Sie können unsere Einführung in Git und GitHub ansehen oder die anderen Coffee Break-Kurse in dieser Serie ausprobieren: