添加遥控器会影响Git存储库的大小吗?

Dan*_*ter 1 git github

在Github上有一个大型项目的分支,并且希望从其他人的分支中获取更改,并建议他们可以提取我的更改.

为我想从这个问题中推荐的代码提取代码的用户添加新命名的远程控制听起来像是一个很好的解决方案,但是这样做会显着影响我本地存储库的大小吗?

(我将继续尝试,但我找不到任何关于此的信息,所以我想我会要求后代.)

Mar*_*air 5

(作为术语的注释,这些是其他"遥控器",而不是"起源";"起源"只是为您克隆的存储库设置的遥控器的默认名称.)

如果您添加了一个远程,它是原始大型存储库的一个分支(并从那里获取),通常会占用很少的额外空间.这是因为git的聪明存储模型.每个文件("blob")由散列标识,每个目录("树")由包含在其中的blob,树和其他对象的散列的散列标识,并且通过包括树的散列数据来标识提交.在源代码的顶层.因此,所有历史直到有一个fork将由具有相同ID的提交表示,因此没有额外的存储空间用于那些.分歧后,只有用于已更改文件的额外存储空间 - 如果存储库中存在大量blob,除非其内容已更改,否则它们仍将具有相同的哈希值,所以只会存储一次.(即使这样,git在打包对象时也会进行二进制增量压缩,因此对大文件进行小的更改应该仍然非常有效.)

如果fork添加了原始存储库中不存在的大型新文件,那么这将显着增加所使用的空间量.