重新克隆回购协议是否会创建不同的.git结构?

重新克隆回购协议是否会创建不同的.git结构?,git,Git,我试图了解,就.git索引中的文件而言,克隆repo通常是否是一种确定性操作 我已重新克隆了一个repo,保留原始克隆作为备份。除了.git中的内容外,备份和新克隆的repo是相同的。即: diff -r repo repo.bck 显示出许多差异,然而: diff -x .git -r repo repo.bck 没有显示任何 这是预期的吗 注意:所讨论的回购实际上是加密的回购,在签出/提交期间使用过滤器,因此索引中的差异可能是由于加密的设置方式。但我实际上认为情况并非如此,因为过滤器用

我试图了解,就
.git
索引中的文件而言,克隆repo通常是否是一种确定性操作

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

diff -r repo repo.bck
显示出许多差异,然而:

diff -x .git -r repo repo.bck 
没有显示任何

这是预期的吗


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

这取决于您的情况

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

  • 即使从本地磁盘克隆存储库,新存储库也可能与原始存储库有所不同,因为
    .git/config
    应该有
    remote
    部分来告诉您从何处克隆此存储库。但基本上,
    .git/objects
    中的文件没有区别,因为它们是从原始存储库硬链接的


  • 如果您能告诉我更多有关您的情况和差异的信息,我将更新此答案。

    如果原始存储库是使用旧版(如1.5版)Git克隆的,则其布局可能与重新克隆的有所不同。