Inhaltsverzeichnis
Zweitens die Verzeichnisstruktur
2.1 Das Zweigstellenverzeichnis
Wenn Git ein Warehouse erstellt, erstellt es ein verstecktes Verzeichnis mit dem Namen .git im aktuellen Warehouse-Verzeichnis, in dem die Warehouse-Konfiguration und Dateninformationen gespeichert werden. In diesem Artikel wird das Basisverzeichnis des Git-Repositorys mit Beispielen vorgestellt.
1. Beispielumgebung
Die folgenden Beispiele werden alle in der folgenden Umgebung ausgeführt:
Systemumgebung: CentOS Linux Release 7.6.1810 (Core)
Git-Version: Git-Version 1.8.3.1
Remote Warehouse: GitHub.
Zweitens die Verzeichnisstruktur
Verwenden Sie den Befehl git init, um das Warehouse zu initialisieren. Die Struktur des Anfangsverzeichnisses (.git) lautet wie folgt:
[root@192 testgit]# tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
9 directories, 13 files
[root@192 testgit]#
In diesem initialisierten Warehouse sieht die Verzeichnisstruktur wie folgt aus, wenn der Zweig dev-branch erstellt und gepusht wird:
[root@192 testgit]# tree .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ ├── heads
│ │ ├── dev-branch
│ │ └── master
│ └── remotes
│ └── origin
│ └── master
├── objects
│ ├── 2d
│ │ └── d2c71b69c837a7459f4bd9c9f7db6520731d06
│ ├── 5c
│ │ └── 7b8eda18a75e13d27c31e65a54b0abd7948510
│ ├── 77
│ │ └── cad3aecf7c2754231095598119979d62a1e1da
│ ├── info
│ └── pack
└── refs
├── heads
│ ├── dev-branch
│ └── master
├── remotes
│ └── origin
│ └── master
└── tags
19 directories, 25 files
[root@192 testgit]#
Als nächstes wird jedes Verzeichnis und jede Datei detailliert vorgestellt.
2.1 Das Zweigstellenverzeichnis
Eine seltene Speicherkurzmethode, mit der die URL von git fetch, git pull und git push angegeben wird, die derzeit grundsätzlich nicht verwendet wird.
2.2 Datei COMMIT_EDITMSG
Es ist einfacher zu verstehen, wenn Sie Großbuchstaben in Kleinbuchstaben ändern: commit_editmsg: Informationen zur Festschreibungsbearbeitung, nur die zuletzt übermittelten Informationen zur Festschreibungsbearbeitung aufzeichnen, z.
[root@192 testgit]# vim README
[root@192 testgit]# git add .
[root@192 testgit]# git commit -m "modify README file"
[master 2392c4d] modify README file
1 file changed, 2 insertions(+), 1 deletion(-)
[root@192 testgit]# git push origin master
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 315 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:New-World-2019/testgit.git
3cbe67c..2392c4d master -> master
[root@192 testgit]# cat .git/COMMIT_EDITMSG
modify README file
[root@192 testgit]#
Ändern Sie im obigen Beispiel zuerst die README-Datei, übertragen Sie sie dann auf die Fernbedienung, schreiben Sie beim Festschreiben "README-Datei ändern", zeigen Sie die Datei COMMIT_EDITMSG an und speichern Sie die Anmerkungen beim Senden.
2.3 Konfigurationsdatei
Schauen Sie sich einfach den Namen an und speichern Sie die Konfigurationsinformationen des aktuellen Lagers. Die Git-Konfigurationsdatei ist in drei Ebenen unterteilt:
- / Etc / gitconfig Datei: System - allgemeine Konfiguration der einzelnen Benutzer und deren Lager auf;
- Datei ~ / .gitconfig oder ~ / .config / git / config: die Lagerkonfiguration des aktuellen Benutzers ;
- .git / config-Datei (unter dem aktuellen Warehouse): Die Konfiguration des aktuellen Warehouse des aktuellen Benutzers .
Die unterste Schicht hat die höchste Priorität und überschreibt die Konfigurationsinformationen der oberen Schicht. Die obigen Dateien können über den Parameter git config geändert werden. Die konfigurierbaren Informationen umfassen: Benutzerinformationen, http-Informationen, Lagerinformationen usw.
[root@192 testgit]# cat ~/.gitconfig
[user]
name = New-World-2019
email = [email protected]
[http]
postBuffer = 1048576000
lowSpeedLimit = 0
lowSpeedTime = 999999
[root@192 testgit]# cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = [email protected]:New-World-2019/testgit.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "dev-branch"]
remote = origin
merge = refs/heads/dev-branch
[root@192 testgit]# git config --list
user.name=New-World-2019
[email protected]
http.postbuffer=1048576000
http.lowspeedlimit=0
http.lowspeedtime=999999
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
[email protected]:New-World-2019/testgit.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.dev-branch.remote=origin
branch.dev-branch.merge=refs/heads/dev-branch
[root@192 testgit]#
Wenn im obigen Beispiel die Datei / etc / gitconfig nicht im System erstellt wurde, wird sie nicht gedruckt. Es ist ersichtlich, dass das Ergebnis des Befehls git config --list im aktuellen Warehouse die Summe der Dateien ~ / .gitconfig und .git / config ist. Wenn Sie weitere Konfigurationsinformationen benötigen, können Sie über den Befehl git config mehr erfahren.
2.4 Beschreibungsdatei
Wird verwendet, um Projektbeschreibungsinformationen in GitWeb anzuzeigen. Der Standardinhalt lautet wie folgt:
Unnamed repository; edit this file 'description' to name the repository.
2.5 HEAD-Datei
Speichern Sie den HEAD-Zeiger, um auf den aktuellen Zweig zu zeigen, dh zeichnen Sie den aktuell aktiven Zweig auf, zum Beispiel:
[root@localhost testgit]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@localhost testgit]# cat .git/HEAD
ref: refs/heads/master
[root@localhost testgit]# git checkout dev-branch
切换到分支 'dev-branch'
[root@localhost testgit]# cat .git/HEAD
ref: refs/heads/dev-branch
[root@localhost testgit]#
Im obigen Beispiel wurde es am Hauptzweig gestartet. Nach dem Wechsel zum Zweig dev-branch wird der Inhalt der Datei .git / HEAD zu refs / Heads / dev-branch.
2.6 Hooks-Verzeichnis
Im Verzeichnis sind viele Hook-Dateien (einige Skripte) gespeichert. Diese Dateien sind benutzerdefinierte Skripte, die von verschiedenen Git-Befehlen verwendet werden und vor und nach dem Vorgang in bestimmten Phasen von Git automatisch ausgeführt werden können, z. Einige Beispiel-Hooks werden installiert, wenn Sie git init ausführen, aber alle sind standardmäßig deaktiviert. Wenn Sie es aktivieren möchten, müssen Sie das Suffix .sample der Datei löschen.
2.7 Indexdatei
Temporärer Speicherbereich (Bühne), Binärdatei.
2.8 Info-Verzeichnis
Andere Informationen des Repositorys werden in diesem Verzeichnis aufgezeichnet.
info / exclude: Ignoriert Dateien im angegebenen Modus, ähnlich wie .gitignore, aber .gitignore ist für jedes Verzeichnis spezifisch.
2.9 Protokollverzeichnis
Speichern Sie alle aktualisierten Referenzdatensätze. Die Verzeichnisstruktur ist wie folgt:
[root@localhost logs]# tree
.
├── HEAD
└── refs
├── heads
│ ├── dev-branch
│ └── master
└── remotes
└── origin
├── dev-branch
└── master
4 directories, 5 files
[root@localhost logs]#
Unter diesen zeichnet HEAD alle Änderungsdatensätze auf, einschließlich des Wechsels von Zweigen, und speichert die Änderungsdatensätze von lokalen und entfernten Zweigen unter Protokollen / Refs.
2.10 Objektverzeichnis
Git ist ein inhaltsadressierbares Dateisystem. Der Kern von Git ist ein einfacher Schlüsselwert-Datenspeicher. Sie können jede Art von Inhalt in das Git-Repository einfügen und es wird ein eindeutiger Schlüssel zurückgegeben, über den der Inhalt jederzeit wieder abgerufen werden kann.
Das einfache Verständnis lautet: Das Objektverzeichnis ist eine Git-Datenbank (eine Schlüssel-Wert-Paar-Datenbank, die in Form von map [key] = value vorstellbar ist). Auf den Inhalt wird gemäß dem Schlüssel zugegriffen, und der Schlüssel ist der Wert berechnet von SHA1. In diesem Verzeichnis sind (höchstens) drei Arten von Objekten gespeichert: Datenobjekte (Blob-Objekte), Baumobjekte (Baumobjekte) und Festschreibungsobjekte (Festschreibungsobjekte).
(1) Info- und Packverzeichnisse
Wenn die gespeicherte Datei sehr groß ist, komprimiert git sie und speichert sie unter info and pack.
(2) Verzeichnis mit 2 Zeichenbefehlen
Erstens sind diese beiden Buchstaben die ersten beiden Zeichen des berechneten SHA1-Werts (insgesamt 40 Zeichen), und die verbleibenden 38 sind die Dateinamen im Verzeichnis.
2.11 refs Verzeichnis
(1) Kopfverzeichnis
Das Verzeichnis enthält Dateien, die nach jedem lokalen Zweigstellennamen benannt sind , und speichert die zuletzt übermittelte ID des entsprechenden Zweigs, eine vom SHA1-Algorithmus berechnete Zeichenfolge.
(2) Fernbedienungsverzeichnis
Das Verzeichnis enthält Dateien, die nach jedem Namen des Remote-Zweigs benannt sind , speichert die ID der letzten Übermittlung des entsprechenden Zweigs und das Prinzip des Heads-Verzeichnisses.
(3) Tags-Verzeichnis
Speichern Sie die während des Entwicklungsprozesses erstellten Tags, die darin enthaltenen Dateien werden durch den Tag-Namen gesteuert, und der Inhalt der Datei ist die entsprechende ID.
3. Referenzen
[1] Was ist Gits Beschreibungsdatei?
[2] Gitignore
[3] Git-Zweige