1. 我们可以通过调用 commit-tree 命令创建一个提交对象,为此需要指定一个树对象的hash值,以及该提交的父提交对象(如果有的话,第一次将暂存区做快照就没有父对象).
    为什么需要tree对象的hash值?
    因为commit对象就是将tree对象进行多一层的包裹,将这个tree对象进行一些解析说明,比如这个tree对象的版本是什么,是谁提交的,这个版本修改了什么等等的说明内容.
    为什么需要父提交对象?
    因为每一个提交对象都是和上一个提交对象串起来的,就是这个提交对象上面连着父提交对象(就是上一次的提交对象),下面的连着下一次的提交对象
    下面这张图看着就很清晰:
  2. 5:Git的提交对象_git

  3. 创建提交对象的格式
    第一次生成提交对象,没有父提交对象:
echo 'first commit这是提交对象里面的注释' | git commit-tree treehash
:hash

查看提交对象 ​​git cat-file -p 提交对象的hash值​​ 第二次或以上生成提交对象,有父提交对象

echo 'second commit提交对象里面的注释' | git commit-tree treehash -p hash

提交对象的格式很简单:

它先指定一个顶层树对象,代表当前项目快照;

然后是作者/提交者信息(依据你的 user.name 和 user.email 配置来设定,外加一个时间戳);

留空 一行,最后是提交注释

5:Git的提交对象_暂存区_02