Git如何处理二进制文件?

81
  • 我需要告诉Git某些文件是否是二进制(就像Subversion一样)吗?还是说,Git可以自动处理二进制数据?
  • 如果我更改了二进制文件,那么我将拥有100个二进制版本,Git会在存储库中分别存储所有这100个版本吗?
  • Git的子模块是用来做什么的?
4个回答

71
  1. Git通常可以自动检测二进制文件。
  2. 不会,如果存储增量变更集的成本更低(并非总是如此),Git会尝试这样做。
  3. 如果要在项目中引用其他Git仓库,则可使用子模块。

8
这个回答是否应该包括建议_不要_使用Git来存储二进制文件?Git明确是为文本存储而设计的,而不是二进制。有其他更好的工具用于档案管理,例如NuGet、Maven、Artifactory等。 - skitheo
2
@skitheo 我也希望得到一些更加细致的答案,特别是关于事情失控的可能性。 - Benny Bottema

30

我遇到了基本相同的问题:我想git pickle文件,但是由于它们是二进制文件,git认为它们是文本文件。

我在《Pro Git Book》中找到了关于Git Attributes的这一章节。因此,我通过创建一个.gitattributes文件并添加以下行来解决了我的问题:

*.pickle binary

5
git add my-binary-file
git commit
git push

将添加您的二进制文件;这是自动的。

实际上,如果您有100个版本的文件,它将存储它(但压缩)。

您可以使用子模块来引用其他存储库。


-5

问题出在.gitignore文件上

以下路径被你的一个.gitignore文件忽略了:

XXX/YYYY/Bin1_0x1d_0x0d.bin

如果你真的想要添加它们,请使用-f选项。

git add -f XXX/YYYY/*

或者

git add -f XXX/YYYY/Bin1_0x1d_0x0d.bin


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