下面说点git比较深层的东西, 可以很好地帮助理解git的工作原理。
在git的世界里, 有四种类型的object, 分别是tree | blob | commit | tag
笼统地说, tree代表的是目录结构, 或者简单地理解为代表一个目录。
blob用来存储文件内容, 或者说表示一个文件。
commit 存储一次提交的信息,包括所在的tree,parent是谁,作者及message等信息。
tag 就是标签的意思, 实际就是commit的别名。
对于一个git project, 使用git cat-file -p commitID^{tree}, 可以得到commitID指向的tree-blob的结构图。
e.g. git cat-file -p HEAD^{tree} 得到是当前HEAD对应的tree-blob结构如下:
对于blob, 使用git show eec17xxx可以得到文件的内容。
对于commit可以通过git log 或者git show -s --pretty=raw xxxx(commitID)得到commit的具体信息。
对于tag, 可以通过 git cat-file tag xxxx(tag名字), 得到tag的具体信息。