git如何处理二进制文件?

pro*_*eek 60 git binaryfiles

  • 如果某些文件是二进制文件,我是否必须设置一些东西来告诉git,就像svn一样?或者,git只能自动处理二进制数据?
  • 如果我更改二进制文件,以便我有100个二进制修订版,那么git会在存储库中单独存储所有100个版本吗?
  • 什么是git的子模块?

Amb*_*ber 53

  1. Git通常可以自动检测二进制文件.
  2. 不,Git会尝试存储基于增量的变更集,如果它更便宜(并非总是如此).
  3. 如果要在项目中引用其他Git存储库,则使用子模块.

  • 这个答案不应该包括建议_not_使用Git来存储二进制文件吗?Git是为文本存储而设计的,而不是二进制文件.还有其他更好的档案管理工具,即NuGet,Maven,Artifactory等. (3认同)
  • @skitheo,我也希望有一个更细致的答案,特别是关于事情爆炸的可能性的问题 (2认同)

Jas*_*ins 21

Git使用启发式方法来尝试确定文件是否是二进制文件.有关更多信息以及如何强制git将给定文件视为二进制文件,请参阅此文章.

有关子模块的精彩教程,请参阅此处此处.


小智 12

我本质上有同样的问题:我想要git pickle文件,这是二进制文件,但git认为它们是文本.

我在Pro Git Book中找到了关于Git属性的这一章.所以我通过.gitattributes使用以下行创建文件来解决我的问题:

*.pickle binary
Run Code Online (Sandbox Code Playgroud)


Gui*_*ois 5

git add my-binary-file
git commit
git push
Run Code Online (Sandbox Code Playgroud)

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

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

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