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 如何处理二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章
17如何对字符串进行左, 右, 居中对齐 18如何去掉字符串中不需要的字符 19如何读写文本文件 20如何处理二进制文件 21如何设置文件的缓冲