【发布时间】:2021-01-25 13:16:01
【问题描述】:
我正在尝试使用 Git 和 GitHub 来同步一些应用配置文件。这些是以二进制格式存储的 XML 或 plist 文件。例如,Keyboard Maestro .kmsync file。
我可以open these files via a text editor查看 XML 格式。
但是当我在 GitHub 拉取请求、提交视图等中查看这些文件差异时,我看到了一个无用的二进制差异,没有可见的更改:
显示有 0 个添加和 0 个删除。
BIN +17 字节 (100%)
二进制文件未显示。
我可以通过 git 通过 .gitattributes 文件在本地显示基于文本的差异。但是,GitHub 似乎不尊重这些修改:
GitHub 不使用 .gitattributes 文件来选择要在 diff 中显示的文件,因此无法通过这种方式解决此问题。 [source]
当我在 GitHub 上的提交和拉取请求中查看这些文件时,我想查看基于文本的更改和行差异。
例如这里的 GitHub PR。随意分叉和实验:
https://github.com/pkamb/so/pull/1
如何说服 GitHub 存储库 的 Web 视图对某些“二进制”文件使用基于文本的差异?
我找不到针对我的特定问题的现有问题(在 GitHub 上显示非二进制差异 )。
以下问题与此相同行为有关,但针对本地 git(不是 GitHub)。
- Override git's choice of binary file to text
- How would you put an AppleScript script under version control?
我的问题是这个问题的相反,它试图在 GitHub 上将文本文件显示为二进制文件:
【问题讨论】:
-
如何在您的存储库中提供一个指向相应
.kmsync文件的链接以及指向您的.gitattributes文件的链接?这将使问题更容易重现,并且理论上更少。我不认为期望所有查看您的问题的人(在撰写本文时已经有 42 人)各自创建一个示例存储库,试图复制您的情况。 -
我刚刚检查过了。
.kmsync文件是二进制文件!我认为这是一个不小心被视为二进制文件的 XML 文件。您说您可以在文本编辑器中打开该文件并查看 XML。这是不可能的,除非您的编辑器知道如何扩展二进制格式。 GitHub 怎么会知道呢?请解释。我觉得你问的有点太多了。.gitattributes文件不能神奇地将二进制文件转换为文本文件,只能告诉 Git 哪些文件应视为二进制文件或文本文件,以防它无法自动执行正确的操作。这在 Git 本地是行不通的,那为什么在 GitHub 上也行呢? -
那么它是一个特殊的编辑器或带有特殊插件的那种文件的编辑器。也许它使用
plutil -convert在您链接到的线程中提到的引擎盖下。我在 Windows 上的编辑器和我的 IDE 肯定无法打开它。 -
您应该做的是将 XML 文件保存在您的存储库中,并在构建或部署过程中将它们转换为二进制格式,如果您需要这些文件,而不是相反。这是 SCM(源代码管理)最佳实践。那么你也不会再为差异而头疼了。
-
我认为这在 GitHub 上是不可能的。对某些文件类型(如 pdf)有特殊处理,但我认为您无法配置它。
标签: github diff binaryfiles file-type