git--commit/tree/blob/tag

1. commit/tree/blob

git--commit/tree/blob/tag
git--commit/tree/blob/tag
blob

  • 在执行git update-index filenamegit add filename后生成,即加入暂存区时生成。
  • 是一个字节码文件,保存的是一个特定的文件头+加入暂存区的文件的内容
    tree
  • 在执行commit时生成。
  • 根据index文件生成。保存的是暂存区的目录信息。
  • 若暂存区有多个文件夹或子文件夹,会为每个文件夹生成一个tree对象。
    commit
  • 在执行完commit后生成。
  • 保存的是tree对象(tree)、当前分支的前一个commit对象(parent)、文件作者信息(author)、提交者信息(committer)。

2. tag

git--commit/tree/blob/tag
tag:为commit/tree/blob对象打标签,作用与对象的哈希值类似,可视作一个索引,相对于哈希值来说更方便开发人员记忆、识别、操作不同的对象,更加符合人的使用习惯。。

3. commit/tree/blob/tag共同点

  • 对方在objects目录下。
  • 都是将哈希值的前2个字符作文一个文件夹名,然后将哈希值中剩余的38个字符作为一个文件名存放相应对象的信息。并且新建的文件就放在新建的文件夹下。

    例如
    git--commit/tree/blob/tag