一棵树的文件和目录,不依赖于历史上任何特定点的分层集合。例如,如果创建一个文件,然后再删除该文件(没有其他中间的提交),则最终将得到与开始时相同的树。
一个承诺是在项目的历史上的一个点。提交指定一棵树,但还包含其他信息,例如作者/提交者和时间,提交消息(作者在其中描述更改的内容),最重要的是零个或多个父级,它们是存储库的先前状态。(您的第一个提交具有零个父级。此后的大多数提交在线性开发过程中具有一个父级,如果合并,则多于一个。)
您可以了解此git cat-file -p
命令的工作方式,该命令将打印特定哈希的内容,而与类型无关。例如,要查看HEAD提交,可以运行:
$ git cat-file -p HEAD
tree 81ca1cb660ea79131336944df28b13b711d93557
parent 92b6b8fe9956866ace5397e060e7cc8ee1c76233
parent 7ea2575ed96d150ee19f70edea4bd42c7c2f0b83
author Mislav MarohniÄ <mislav.marohnic@gmail.com> 1436468108 -0700
committer Mislav MarohniÄ <mislav.marohnic@gmail.com> 1436468108 -0700
Merge pull request #951 from github/global-args
Avoid depending on a hardcoded list of git global flags
要查看该提交内的树,可以将cat-file -p
其树:
$ git cat-file -p 81ca1cb660ea79131336944df28b13b711d93557
100644 blob 730f77a3be502cfe6769c1305c0b59c22274caf5 .gitignore
100644 blob bcbd000f6b9ad5b0510f804ac4a3b19306b39c03 .travis.yml
100644 blob da71aa1fa3c3ae47b2fe5e6245ce2eea1586e278 CONTRIBUTING.md
...
同样,如果您查看父母,您也会看到那些提交。树的简写,例如rev
is 的提交rev^{tree}
。因此,以前的命令可能已经编写git cat-file -p HEAD^{tree}
。请注意,rev^
代表的父项rev
。当有多个父级时rev^1
,rev^2
等等。有关更多信息,请参见git rev-parse手册页。
commit has
您的第3段开头是什么意思?