我有一个large project on Github的分叉,并希望从其他人的分支中提取更改,并建议他们可以提取我的更改。
为我想从as recommended in this question提取代码的用户添加新的命名遥控器听起来像是一个很好的解决方案,但这样做会显着影响我本地存储库的大小吗?
(我将继续尝试,但我找不到任何关于此的信息,所以我想我会要求后代。)
答案 0 :(得分:5)
(作为术语的注释,这些是其他“遥控器”,而不是“起源”;“起源”只是为您克隆的存储库设置的遥控器的默认名称。)
如果你添加了一个原始大型存储库(并从那里获取)的一个分支,它通常会占用很少的额外空间。这是因为git的聪明存储模型。每个文件(“blob”)由散列标识,每个目录(“树”)由包含在其中的blob,树和其他对象的散列的散列标识,并且通过包括树的散列数据来标识提交。在源代码的顶层。因此,所有历史直到有一个fork将由具有相同ID的提交表示,因此没有额外的存储空间用于那些。在分歧之后,只有用于已更改的文件的额外存储 - 如果存储库中存在大的blob,除非他们的内容被更改,否则它们仍然具有相同的散列,因此将仅存储一次。 (即使这样,git在打包对象时也会进行二进制增量压缩,因此对大文件进行小的更改应该仍然非常有效。)
如果fork添加了原始存储库中不存在的大型新文件,那么这将大大增加所使用的空间量。