Ein Baum ist eine hierarchische Sammlung von Dateien und Verzeichnissen, die nicht an einen bestimmten Punkt im Verlauf gebunden sind. Wenn Sie beispielsweise eine Datei erstellen und diese später löschen (ohne weitere Zwischenschritte), erhalten Sie denselben Baum, mit dem Sie begonnen haben.
Ein Commit ist ein Punkt in der Geschichte Ihres Projekts. Ein Commit gibt einen Baum an, enthält aber auch andere Informationen wie Autor / Committer und Zeit, eine Commit-Nachricht (in der der Autor beschreibt, was sich geändert hat) und vor allem null oder mehr Eltern, die den vorherigen Status des Repositorys darstellen. (Ihr allererster Commit hat keine Eltern. Die meisten Commits danach haben einen Elternteil während der linearen Entwicklung und mehr als einen, wenn Sie zusammenführen.)
Sie können sich ein Bild davon machen, wie dies mit dem git cat-file -p
Befehl funktioniert , der den Inhalt eines bestimmten Hashs unabhängig vom Typ druckt. Um beispielsweise das HEAD-Commit anzuzeigen, können Sie Folgendes ausführen:
$ git cat-file -p HEAD
tree 81ca1cb660ea79131336944df28b13b711d93557
parent 92b6b8fe9956866ace5397e060e7cc8ee1c76233
parent 7ea2575ed96d150ee19f70edea4bd42c7c2f0b83
author Mislav MarohniÄ <[email protected]> 1436468108 -0700
committer Mislav MarohniÄ <[email protected]> 1436468108 -0700
Merge pull request #951 from github/global-args
Avoid depending on a hardcoded list of git global flags
Um den Baum in diesem Commit zu sehen, können Sie cat-file -p
ihn als Baum verwenden:
$ git cat-file -p 81ca1cb660ea79131336944df28b13b711d93557
100644 blob 730f77a3be502cfe6769c1305c0b59c22274caf5 .gitignore
100644 blob bcbd000f6b9ad5b0510f804ac4a3b19306b39c03 .travis.yml
100644 blob da71aa1fa3c3ae47b2fe5e6245ce2eea1586e278 CONTRIBUTING.md
...
Wenn Sie sich die Eltern ansehen, werden Sie auch feststellen, dass es sich um Commits handelt. Eine Abkürzung für den Baum innerhalb eines Commits wie es rev
ist rev^{tree}
. Der vorherige Befehl hätte also geschrieben werden können git cat-file -p HEAD^{tree}
. Beachten Sie, dass dies rev^
für das übergeordnete Element von steht rev
. Wenn es mehrere Eltern sind rev^1
, rev^2
usw. Weitere Informationen finden Sie in der zur Verfügung stehenden git rev-Parse - man - Seite .
commit has
bedeutet am Anfang Ihres 3. Absatzes?