我试图理解一般克隆一个repo是一个关于.git
索引中文件的确定性操作。
我重新克隆了一个repo,将原始克隆保留为备份。除了.git
中的内容之外,备份和新克隆的repo是相同的。那就是:
diff -r repo repo.bck
显示了很多差异,而:
diff -x .git -r repo repo.bck
不显示任何内容。
这是预期的吗?
注意:有问题的回购实际上是加密仓库,在结账/提交期间使用过滤器,因此索引的差异可能是由于加密设置的方式。但我实际上认为情况并非如此,因为过滤器用于向/从工作目录检出/提交文件,但不应影响.git
索引。
答案 0 :(得分:0)
这取决于你的情况。
如果从远程存储库克隆存储库,则应在通过网络传输之前对远程存储库中的git对象进行打包,并且这些对象存储在.git/objects
中,而不会在传输后解压缩。因此,两个存储库之间存在很大差异是很自然的。
即使您从本地磁盘克隆存储库,新存储库也可能与原始存储库存在差异,因为.git/config
应该有remote
部分来告诉您此存储库的克隆位置。但基本上.git/objects
中的文件没有差异,因为它们与原始存储库硬连接。
如果你告诉我更多关于你的情况和差异,我会更新这个答案。