我应该在Git中存储什么?

4
我有几个使用Git进行控制的项目。每个项目都由在Visual Studio中创建的源代码、PAD文件(XML文件)、多个.txt文件、几个.psd文件(Photoshop文件)、.jpg/.png/.bmp文件、已编译的安装程序等组成。哪些文件应该存储在Git仓库中,哪些不应该?
我知道所有文本文件,如PAD文件或.txt文件,都可以存储在其中,但是.psd文件、图像文件和已编译的设置文件呢?是否有一篇文章清楚地描述了为什么将二进制数据放入Git中不是一个好主意?
将所有内容放入Git的一个巨大优势是,当我标记特定软件版本(发布给公众)时,一旦我检出该标记,我就会获得与该特定版本相关的所有内容-其设置文件、所有源代码、图像和推广材料,并且我完全回到过去,而无需在其他地方查找其他文件。缺点是什么?你们公司是如何解决这个问题的?

3
https://dev59.com/NnI-5IYBdhLWcg3wVWti https://dev59.com/GHRB5IYBdhLWcg3wtZQV - Josh Lee
1
没有明确的规则,但通常大型二进制文件和编译/生成步骤的结果不应该在代码库中。如果您分发源代码并使用一般不可用的代码生成器,则可以违反后者的规则。 - Fred Foo
1个回答

3

我也会将二进制文件放入git中。为什么不呢?通常情况下,我的PSD文件在开发阶段不会改变,因为设计已经被完善了。但如果它们发生了变化,我可能会将它们检入git...


请澄清一下,您所说的二进制文件是指二进制文件,而不是编译后的对象/可执行文件,对吗? - Mark Peters
2
“为什么不呢”--因为你的代码库变得非常庞大,传输它们变得非常沉重。我曾经花了几天时间从一个包含大量声音文件和图像的 SVN 代码库中检出只有主干部分,而且连接速度很慢,服务器还在国外。 - Fred Foo
如果你真的想存储二进制文件,或许可以考虑使用子模块? - Michael Mior
2
“生成的”文件(二进制或其他)实际上不应该存在版本控制数据库中。否则,这是可以的。您的PSD文件未经生成,因此我认为将它们检入是可以的。如果您不经常修改它们,git在大小方面也不会有任何问题。 - Noufal Ibrahim
2
是的,我认为“二进制文件”这个词需要澄清,但我严格指的是在他的问题中理解为PSDs的上下文中的二进制文件。不过确实每种情况都不同。版本控制就是版本控制,你应该对PSDs进行版本控制,无论你是否将它们保留在子模块中,那可能是更好的做法,但超出了问题的范围... - citizen conn
抱歉,伙计们,但我没有得到我的答案,这个答案需要更多的澄清。 - Hbirjand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接