Start
/
Erweiterte Site-Tools
/
Git
/
Wie strukturiert Git den Inhalt des Repository?

Wie strukturiert Git den Inhalt des Repository?

Ein .git Verzeichnis hat eine ähnliche Struktur wie die folgende:

Objekte/Ordner

In diesem Verzeichnis werden die Daten Ihrer Git-Objekte gespeichert- der gesamte Inhalt der Dateien, die Sie jemals eingecheckt haben, Ihre Commits, Bäume und Tag-Objekte

  • Objekte/[0-9a-f] [0-9a-f] Ordner

Ein neu erstelltes Objekt wird in einer eigenen Datei gespeichert. Die Objekte werden über 256 Unterverzeichnisse platziert, wobei die ersten beiden Zeichen des SHA1 Objektnamens verwendet werden, um die Anzahl der Verzeichniseinträge in den Objekten selbst auf einer überschaubaren Zahl zu halten. Objekte, die hier gefunden werden, werden oft als unverpackte oder lose Objekte bezeichnet.

  • Objekte/Packordner

Dateien, die viele Objekte in komprimierter Form speichern, zusammen mit Indexdateien, die einen zufälligen Zugriff auf sie ermöglichen, befinden sich in diesem Verzeichnis.

  • Objekte/Info-Ordner

Zusätzliche Informationen über das gespeicherte Objekt werden in diesem Verzeichnis abgelegt.

Referenzordner

Referenzen werden in Unterverzeichnissen dieses Verzeichnisses gespeichert. Der Befehl git prune bewahrt Objekte, die von refs in diesem Verzeichnis und dessen Unterverzeichnissen erreichbar sind.

  • refs/heads/Ordner

Enthält Commit-Objekte.

  • refs/tags/Ordner

Enthält einen beliebigen Objektnamen.

  • refs/remotes/Ordner

Enthält Commit-Objekte von Verzweigungen, die aus einem entfernten Repository kopiert wurden.

gepackte Referenzdatei

Die Datei besteht aus gepackten Köpfen und Tags. Es ist nützlich für einen effizienten Zugriff auf das Repository.

HEAD-Datei

Diese Datei enthält einen Verweis auf den Zweig, in dem Sie sich gerade befinden. Dies teilt Git mit, was als übergeordnetes Element des nächsten Commits verwendet werden soll.

Konfigurationsdatei

Dies ist die Haupt-Git-Konfigurationsdatei. Es hält spezifische Git-Optionen für Ihr Projekt, wie Ihre Fernbedienungen, Push-Konfigurationen, Tracking-Zweige und mehr. Ihre Konfiguration wird zuerst aus dieser Datei geladen, dann aus einer ~/.gitconfig Datei und dann aus einer /etc/gitconfig Datei, falls vorhanden.

Zweige

Eine veraltete Methode zum Speichern von Kurzschreibweisen, mit denen eine URL für git fetch , git pull und git push angegeben werden kann. Dieser Mechanismus ist ein Vermächtnis und wird in modernen Repositories kaum zu finden sein.

Hooks-Ordner

Dieses Verzeichnis enthält Shell-Skripte, die nach den entsprechenden Git-Befehlen aufgerufen werden. Nachdem Sie beispielsweise ein Commit ausgeführt haben, wird Git versuchen, das Post-Commit-Skript auszuführen.

Indexdatei

Der GIT-Index wird als Bereitstellungsbereich zwischen Ihrem Arbeitsverzeichnis und Ihrem Repository verwendet. Sie können den Index verwenden, um eine Reihe von Änderungen aufzubauen, die Sie zusammen übernehmen möchten. Wenn Sie ein Commit erstellen, wird als Commit angegeben, was gerade im Index steht, und nicht, was sich in Ihrem Arbeitsverzeichnis befindet. Es ist eine binäre Datei, die eine sortierte Liste von Pfadnamen enthält, jede mit Berechtigungen und dem SHA-1 eines blob Objekts.

Info-Ordner

Zusätzliche Informationen über das Repository werden in diesem Verzeichnis aufgezeichnet.

Fernbedienungsordner

Dieser Ordner enthält Abkürzungen für URLs und Standard-Refnames, die bei der Interaktion mit entfernten Repositories über die Befehle git fetch , git pull und git push verwendet werden. Dieser Mechanismus ist ein Vermächtnis und wird in modernen Repositories kaum zu finden sein.

Protokollordner

Speichert die an refs vorgenommenen Änderungen im Repository.

  • Ordner logs/refs/heads/

Zeichnet alle Änderungen auf, die an den verschiedenen Verzweigungsspitzen vorgenommen wurden

  • Ordner logs/refs/tags/

Zeichnet alle an den verschiedenen Tags vorgenommenen Änderungen auf.

Modulordner

Enthält die Git-Repositories der Submodule.

Ordner für Arbeitsbäume

Enthält Verwaltungsdaten für verknüpfte Arbeitsbäume. Jedes Unterverzeichnis enthält den Arbeitsbaum-bezogenen Teil eines verknüpften Arbeitsbaums.

Diesen Artikel teilen