GIT如何决定blob中的内容?

Vil*_*e M 1 git

我试图了解Git如何更好地工作.

给定一些任意文件和一些任意数量的提交,git如何决定如何将这些文件拆分成blob,然后使用SHA-1哈希进行唯一标识?

我刚刚将大约10个perl/C/java代码和文本提交到新的git repo中,并且不知何故git将文件分成了几个小段,它是如何决定这些段应该如何划分的呢?

Pie*_*ter 7

Git为每个文件的内容创建一个blob,除非已存在相同的内容(在这种情况下它会重用blob).但还有更多 - git还为每个目录,提交和签名标记创建对象.每个对象都存储在.git/objects中,直到重新git gc打包存储库(自动或通过运行),在这种情况下,一些对象将被放在一起并整理成一个packfile(在.git/objects/pack中).

它似乎没有像你想象的那样在多个blob或小段之间拆分单个文件的内容.