【发布时间】:2016-08-10 01:06:56
【问题描述】:
我正在尝试使用“git difftool”比较二进制文件。该文件也是暂存的,但似乎这并不重要。所以我正在使用类似下面的东西:
git difftool --staged /path/to/file
我的 .gitconfig 配置如下:
[difftool "bc3"]
path = C:/Program Files (x86)/Beyond Compare 3/BComp.com
cmd = BComp.com \"$LOCAL\" \"$REMOTE\" -lefttitle="Remote" -righttitle="$BASE" -lro
[diff]
tool = bc3
[difftool]
prompt = false
因此,当我运行 git difftool 时,它会按预期打开 Beyond Compare,但是,我收到一个错误,即基本二进制文件不存在。修改后的本地副本已正确加载到工具中。
我注意到 *.bcpkg(Beyond Compare 设置文件,基本上是一个 zip 文件)以及常规 *.zip 文件。但似乎对 *.exe 文件工作正常。我注意到的是 git difftool 不应该返回,除非 Beyond Compare 关闭,因为如果它返回它创建的临时文件将被删除。但如果是 zip 文件,它总是会立即返回。
顺便说一下,所有其他文件类型的差异对我来说都很好。我使用的是 Windows 7(64 位),如您所见,我配置了 Beyond Compare 3。
【问题讨论】:
-
据我了解,Git 不能很好地处理二进制文件的差异。这就是为什么许多人不使用 Git 对二进制文件进行版本控制的原因。我看不出你的问题有什么出人意料的地方。
-
太令人失望了...我可以提取“基础”文件和存储库之外的暂存文件以使用我的工具手动比较它们吗?
-
如果“基础”文件是纯文本、源代码等而不是二进制文件,那么应该可以。
-
所以要清楚你的意思是,如果文件是文本文件,我可以提取基本文件(与最后提交状态匹配的文件)和/或暂存区域中的文件,回购之外的某个地方。并通过任何方式比较它们。但同样的机制不适用于二进制文件?
-
@TimBiegeleisen 确实 Git 不能很好地处理二进制差异,但是 OP 正在配置一个外部工具来处理这些差异,这很好。
标签: git git-diff beyondcompare3