当我们执行git add .的时候,git为每个待放入stage区域的文件生成一个object SHA-1 hash,为每个目录生成一个tree SHA-1 hash。
当我们执行git commit的时候,git为当前工程生成一个tree SHA-1 hash且为此次提交生成一个commit SHA-1 hash。
示例如下
$ git log --oneline
dd39e4f??first commit ,yeah
664e6f8 Initial commit
$ git cat-file -p dd39e4f
tree 57b0d616d1632db2faa16f46ade1b5b602718612
parent 664e6f813edcef363dc00dacf5e6d2ea812de2af
author javacodercn <javacoder.cn@hotmail.com> 1496666027 +0800
committer javacoder <javacoder.cn@hotmail.com> 1496666027 +0800
first commit ,yeah
$ git cat-file -p 57b0d616d1632db2faa16f46ade1b5b602718612
100644 blob cbfa161aa0ddf63d1d93b710c085a0b346829925 README.md
100644 blob 21897740d45f07c5128a76533b2662c508f70470 test.java
$ git cat-file -p dd39e4f^{tree}?
100644 blob cbfa161aa0ddf63d1d93b710c085a0b346829925 README.md
100644 blob 21897740d45f07c5128a76533b2662c508f70470 test.java
可以看到 dd39e4f^{tree}表示的是dd39e4f提交时对于的tree 对象
Posted in: Git
Comments are closed.