【发布时间】:2015-06-06 01:08:03
【问题描述】:
我知道如果我在裸存储库中有文件,我可以使用git show HEAD:path/to/file 访问它们。
但是我可以在不克隆和修改工作树的情况下将新内容添加到裸存储库吗?
【问题讨论】:
-
你可以在不使用工作树的情况下通过使用低级 git 命令来构建提交,这是一种非常光荣的做事方式,但很少对便利命令进行改进;你可以在不克隆的情况下做到这一点——甚至有很多选择——但是选择一种合理的方式来实现这取决于你想要构建的历史和已经存在的历史之间的关系。那么,请问您是在什么情况下提出这个问题的呢?
-
上述 git 存储库的内容是小文件,一天可能数百万。虽然我知道随着事情变得越来越大,会产生性能成本,但在极端情况下在服务器上运行数百万个小文件和文件夹的担忧并不好。在研究替代方案时,使用裸存储库可以缓解一些问题
-
所以一次提交可能包含数百万个文件,您经常或通常不希望一次全部检出,是吗?好的,这很有帮助。下一个问题:是你试图避免无克隆要求的怪物结账,还是什么?要更新一个 repo,你要么必须在同一个文件系统上,要么推送到它,剩下的唯一问题是权衡在哪里做工作和提交结构的细节。
-
每个文件都有一个关联的提交,它们只会被添加/读取,从未删除/修改过,目前主要担心的是文件系统和磁盘性能的巨大文件/文件夹树跨度>
-
好的。 git 的构建可以扩展到这样的领域,这只是在这里进行的最佳方式的问题,所以,如果您不想检查所有文件,是否有理由让每个提交都包含它们? . . .但是,真的,这里有足够多的问题,我认为对您正在设置的系统以及您目前如何看待 git 适应它的相当完整的叙述性描述将是最快的,然后我们将能够建议下一步为您提供更清晰的起点。