创建Git分支是否复制了所有源代码?

2024-03-29 10:09:05 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,你在YouTube团队中使用@Google,你想修改搜索栏的外观,或者只是想改变字体大小,或者在推荐系统等主要项目上工作,那么在你的机器上制作一个Git分支复制YouTube的所有后端代码吗?那么,如果YouTube团队中有100名工程师在他们的笔记本电脑上工作,那么他们的微型笔记本电脑上是否有100份YouTube代码的副本在流通?因为我理解Git,当您分支时,您会创建一个源代码的副本,然后将其合并回生产分支,然后再合并到主分支。你知道吗

如果我错了,请纠正我,因为我只在使用Git的更小的项目上工作过(大约100个文件,大约15k行代码)。你知道吗

非常感谢您的支持。你知道吗

谢谢。你知道吗


Tags: 项目代码git机器源代码youtube系统分支
1条回答
网友
1楼 · 发布于 2024-03-29 10:09:05

在Git中创建分支复制。你知道吗

好吧,这有点言过其实了。它复制一个hash ID。也就是说,假设您有一个具有N个分支的现有存储库。当您创建一个新分支时,Git会写入一个新文件,其中包含一个短散列ID(目前为40字节长,最终为64字节长)。。。50兆字节。你知道吗

另一方面,克隆存储库复制一切。如果服务器S上的存储库是50兆字节,而您将其克隆到笔记本电脑L上,则笔记本电脑L上的存储库也是50兆字节。1有一些方法可以减小克隆的大小(通过省略一些提交),但应小心使用。不管怎么说,现在50兆字节已经很小了。:-)

Git正在计划执行一种主要是延迟的克隆,其中一个初始克隆复制提交的部分内容,并用一种IOU替换其余的内容。不过,这还没有准备好生产。你知道吗

理解这一切的方法是Git不关心文件,也不关心分支。Git关心提交。提交包含文件,所以当你得到提交时你会得到文件,提交是由不可理解的散列ID标识的,所以我们有分支名来查找散列ID。但重要的是承诺。创建一个新的分支名称只是将一个现有的提交哈希ID存储到新的分支名称中。这样做的代价很小。你知道吗


1由于Git存储库中存储的对象被“打包”的方式,这并不能完全保证。Git会时不时地运行git gc,垃圾收集器来收集和扔掉垃圾,并缩小存储库的大小,根据给定的存储库中有多少垃圾,您可能会看到不同的大小。你知道吗

Git运行git gc auto的次数不够频繁(特别是2.17 git commit之后忽略了启动自动gc),或者自动gc永远无法完成清理(由于早期gc遗留的故障日志,在2.12.2和2.13.0中修复)。在这些情况下,克隆可能会比原始存储库小得多。你知道吗

相关问题 更多 >