重新克隆一个repo会创建一个不同的.git结构吗?

时间:2013-11-28 10:41:54

标签: git

我试图理解一般克隆一个repo是一个关于.git索引中文件的确定性操作。

我重新克隆了一个repo,将原始克隆保留为备份。除了.git中的内容之外,备份和新克隆的repo是相同的。那就是:

diff -r repo repo.bck

显示了很多差异,而:

diff -x .git -r repo repo.bck 

不显示任何内容。

这是预期的吗?

注意:有问题的回购实际上是加密仓库,在结账/提交期间使用过滤器,因此索引的差异可能是由于加密设置的方式。但我实际上认为情况并非如此,因为过滤器用于向/从工作目录检出/提交文件,但不应影响.git索引。

1 个答案:

答案 0 :(得分:0)

这取决于你的情况。

  1. 如果从远程存储库克隆存储库,则应在通过网络传输之前对远程存储库中的git对象进行打包,并且这些对象存储在.git/objects中,而不会在传输后解压缩。因此,两个存储库之间存在很大差异是很自然的。

  2. 即使您从本地磁盘克隆存储库,新存储库也可能与原始存储库存在差异,因为.git/config应该有remote部分来告诉您此存储库的克隆位置。但基本上.git/objects中的文件没有差异,因为它们与原始存储库硬连接。

  3. 如果你告诉我更多关于你的情况和差异,我会更新这个答案。