Heim >Entwicklungswerkzeuge >Idiot >Der zugrunde liegende Verarbeitungsfluss von Git

Der zugrunde liegende Verarbeitungsfluss von Git

王林
王林Original
2023-05-20 09:11:07600Durchsuche

Die Beliebtheit von Code-Hosting-Plattformen wie GitHub und GitLab hat Git zu einem Versionskontrolltool gemacht, das viel Aufmerksamkeit erregt hat, und immer mehr Menschen haben verstanden, wie Git funktioniert. Das Erscheinungsbild von Git zu verstehen bedeutet jedoch nur, Git zu verwenden. Um Git wirklich zu verstehen, müssen Sie auch den zugrunde liegenden Verarbeitungsfluss von Git verstehen.

Überblick über die zugrunde liegende Struktur von Git

Git ist ein verteiltes Versionskontrollsystem, dem ein zentralisiertes Versionskontrollsystem (wie SVN) entspricht, da Git verteilt ist Features: Jedes Git-Repository ist ein vollständiges Repository.

Das Arbeitsverzeichnis von Git enthält zwei Teile: Git-Warehouse-Objekt und Arbeitsbaum. Der Status des Git-Warehouse-Objekts und des Arbeitsbaums kann mit der Beziehung zwischen Aliasen, Hardlinks bzw. Softlinks verglichen werden.

Die zugrunde liegende Dateispeichermethode von Git

Die zugrunde liegende Dateispeichertechnologie von Git ist hauptsächlich in zwei Aspekte unterteilt:

  1. Objektspeicherung#🎜 🎜 #
  2. Verwendung eines komprimierbaren Dateiformats
Objektspeicherung

Git speichert alle Codeänderungen als Objekte, darunter den Schlüssel. Die Objekte sind Blob, Baum und verpflichten. Unter diesen ist Blob eine Momentaufnahme des Codeinhalts, Tree eine Momentaufnahme einer Reihe von Dateien und Verzeichnissen und Commit eine Momentaufnahme von Codeänderungen.

Aufmerksame Leser werden feststellen, dass diese Objekte dem Inode-Mechanismus in Linux-Systemen ähneln. Ein Inode-Dateiknoten kann eine Datei oder ein Verzeichnis darstellen und ein Inode-Dateiknoten enthält Informationen wie die Festplattenblocknummer . In Git ist Blob das Snapshot-Objekt des Dateiinhalts im Inode-Dateiknoten, Tree ist das Snapshot-Objekt des Inode-Verzeichnisses und Commit ist der Versions-Snapshot, der aus mehreren Inode-Dateiknoten besteht.

In Git werden Objekte normalerweise als SHA1-Hashes dargestellt. Der SHA1-Hashwert ist eine hexadezimale Zeichenfolge mit 40 Zeichen. Git verwendet SHA1-Hashes, um jeder Version, jeder Datei und jedem Verzeichnis sowie jedem Commit eine eindeutige Kennung zuzuweisen.

Verwendung eines komprimierbaren Dateiformats

Die unterste Ebene von Git verwendet eine Technologie, die der Datei einen Teil der Metadaten hinzufügt, um Codeänderungen zu verarbeiten. Bei Metadaten handelt es sich häufig um einen Zwischenstatus, beispielsweise um Änderungsinformationen zwischen zwei Commits. Diese Informationen können in kleine Dateien komprimiert und bei Bedarf dekomprimiert werden.

Das von Git verwendete Standarddateiformat ist das Packfile-Format. Packfile ist ein stark komprimiertes Git-Objektspeicherformat, das mehrere Objekte in einer einzigen Datei archivieren kann, um sie zu übertragen, wenn Git netzwerkübergreifende Vorgänge ausführt.

Der zugrunde liegende Kernverarbeitungsprozess von Git

Im vorherigen Inhalt haben wir uns ausführlich mit Git-Objekten und der zugrunde liegenden Dateispeichertechnologie befasst. Als Nächstes werden wir uns mit der zugrunde liegenden Kernverarbeitung von Git befassen Verfahren.

Git-Initialisierungsprozess

    Verzeichnis erstellen.git/
  1. Unterverzeichnis erstellen.git/objects/
  2. # 🎜🎜 #Erstellen Sie ein Unterverzeichnis.git/refs/
  3. Erstellen Sie eine leere HEAD-Datei
  4. Erstellen Sie eine leere Indexdatei
  5. #🎜🎜 #Gits Basisdatei commands
Hier ist eine kurze Einführung in die verschiedenen grundlegenden Dateibefehle von Git:

hash-object-Befehl: Wird zum Übertragen von Dateien in ein Git-Objekt verwendet.

    cat-file-Befehl: Wird zum Anzeigen des Inhalts von Git-Objekten verwendet.
  1. ls-tree-Befehl: Wird verwendet, um den Inhalt eines bestimmten Git-Baums anzuzeigen.
  2. update-index-Befehl: Wird zum Hinzufügen von Dateien oder Verzeichnissen zum Git-Index verwendet.
  3. write-tree-Befehl: Wird zum Konvertieren des Git-Index in ein Git-Baumobjekt verwendet.
  4. Gits Übermittlungsprozess
Gits Übermittlungsprozess besteht immer noch aus drei Feldern: Blob, Tree und Commit.

Blob: Wird verwendet, um die Metadaten jeder Datei im Code darzustellen, einschließlich Dateiname, Dateityp und natürlich SHA1-Hashwert usw.

    Baum: Stellen Sie basierend auf dem Blob im vorherigen Schritt die entsprechenden Dateien und Verzeichnisse zusammen, um einen Snapshot-Baum zu bilden, und speichern Sie ihn in einem Git-Knoten.
  1. Commit: Fügen Sie die beiden oben genannten Objekte zusammen mit den übermittelten Benutzerinformationen zusammen, um einen Versions-Snapshot zu erstellen.
  2. In den obigen Schritten müssen einige Dinge beachtet werden. Wenn Sie beispielsweise eine Blob-Konvertierung durchführen, müssen Sie den Parameter -g hinzufügen.
Gits Verzweigungsprozess

In Git sind Verzweigungen unabhängige Zeiger, die auf das zuletzt übermittelte Objekt zeigen. Es gibt zwei Arten von Zweigstellen: lokale Zweigstellen und Remote-Zweigstellen.

Nachdem der lokale Zweig erstellt wurde, wird durch das Hinzufügen einer neuen Übermittlung HEAD automatisch verschoben, um auf die neueste Übermittlung zu verweisen. Während dieser Zeit wird der Checkout-Befehl verwendet, um zwischen verschiedenen Zweigen zu wechseln. Remote-Branches beziehen sich auf eine Möglichkeit, Code zwischen verschiedenen lokalen Bibliotheken zusammenzuarbeiten.

Zusammenfassung

In diesem Artikel wird der zugrunde liegende Verarbeitungsprozess von Git unter zwei Aspekten erläutert: der zugrunde liegenden Dateispeichermethode von Git und dem zugrunde liegenden Kernverarbeitungsprozess von Git. Durch die Erläuterung von Git-Objekten und der zugrunde liegenden Dateispeichertechnologie verstehen wir die zugrunde liegende Architektur von Git. In diesem Artikel wird auch der zugrunde liegende Kernverarbeitungsprozess von Git vorgestellt, einschließlich des Initialisierungsprozesses von Git, der grundlegenden Dateibefehle von Git, des Übermittlungsprozesses von Git und des Verzweigungsprozesses von Git. Durch ein tiefes Verständnis des zugrunde liegenden Verarbeitungsflusses von Git können wir den Betriebsmechanismus von Git besser verstehen und Git effizienter für die Versionskontrolle verwenden.

Das obige ist der detaillierte Inhalt vonDer zugrunde liegende Verarbeitungsfluss von Git. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn