Git 如何处理二进制文件?

Posted

技术标签:

【中文标题】Git 如何处理二进制文件?【英文标题】:How does Git deal with binary files? 【发布时间】:2011-04-05 19:48:55 【问题描述】: 我是否必须做一些事情来告诉 Git 某些文件是否是二进制文件(如在 Subversion 中)?或者,Git 可以自动处理二进制数据吗? 如果我更改二进制文件,使我有 100 个二进制修订版,git 是否会将所有 100 个版本单独存储在存储库中? git 的子模块有哪些用途?

【问题讨论】:

【参考方案1】:
    Git 通常可以自动检测二进制文件。 不,Git 将尝试存储基于增量的变更集 if it's less expensive to(并非总是如此)。 如果您想在项目中引用其他 Git 存储库,则使用子模块。

【讨论】:

这个答案不应该包含使用 Git 存储二进制文件的建议吗? Git 是专门为文本存储设计的,而不是二进制文件。还有其他更擅长归档管理的工具,例如 NuGet、Maven、Artifactory 等。 @skitheo 我也希望得到一个更细致入微的答案,尤其是关于事情爆发的可能性【参考方案2】:

我基本上遇到了同样的问题:我想 git 处理二进制文件,但 git 认为它们是文本。

我在 Pro Git Book 中找到了this chapter on Git Attributes。所以我通过使用以下行创建一个.gitattributes 文件来解决我的问题:

*.pickle binary

【讨论】:

【参考方案3】:
git add my-binary-file
git commit
git push

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

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

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

【讨论】:

【参考方案4】:

问题出在 .gitignore

您的 .gitignore 文件之一会忽略以下路径: XXX/YYYY/Bin1_0x1d_0x0d.bin

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

git add -f XXX/YYYY/*

git add -f XXX/YYYY/Bin1_0x1d_0x0d.bin

【讨论】:

以上是关于Git 如何处理二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

你如何处理大量的小文件?

如何处理在运行时确定类型的数组的声明和分配?

scrapy中如何处理大文件下载?

17如何对字符串进行左, 右, 居中对齐 18如何去掉字符串中不需要的字符 19如何读写文本文件 20如何处理二进制文件 21如何设置文件的缓冲

如何处理 TcpStream 上的并行读写?

Bazel - 如何处理外部 .so 库的传递依赖关系?