1

我正在尝试合并具有不同 .NET.dll和.NET 的分支.pdb,而 git/BC4 正在尝试对文件进行文本合并,而不是让我选择本地与远程。

我以前从来没有经历过这种情况,大概是我改变了一些设置或者BC4与BC3有一些不同。

我的相关.gitconfig

[merge]
    tool = bec3
    renamelimit = 2000
[mergetool]
    prompt = false
    keepBackup = false
[mergetool "bec3"]
    cmd = \"C:/Program Files (x86)/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = true

我正在使用 msysgit 1.9.5 和 Beyond 比较 4.0.3

编辑:我不想二进制合并,git过去只是让我选择本地或远程文件来解决冲突。我的问题是“这是 git 设置(如果是,是什么?)还是 BC 设置?”

4

2 回答 2

1

Beyond Compare 不支持合并二进制文件。一些版本控制系统允许您根据文件扩展名定义不同的合并工具,为二进制和文本文件调用不同的合并工具。我不认为 Git 提供了一种方法来做到这一点。

您必须在 Beyond Compare 之外合并二进制文件。

要解决与 .dll 文件的存储库版本的冲突:

    git checkout --theirs -- file.dll
    git add file.dll
    git commit

要解决与您的 .dll 文件版本的冲突:

    git checkout --ours -- file.dll
    git add file.dll
    git commit

我会将二进制文件的合并添加到我们的功能愿望列表中,以用于 Beyond Compare 的未来版本。

于 2015-05-06T16:27:44.027 回答
0

这在 6 年后效果更好:使用 Git 2.34(2021 年第四季度),xxdiff difftool(在您的情况下为“BeyondCompare”)后端可以以状态 128 退出difftool-helper,当它根本不重要时,启动后端将其视为重大失败.
这不再阻塞。

在这里,“xxdiff”是diff您选择的工具(同样,这里是 BeyondCompare)

请参阅David Aguilar ( ) 的提交 571f434(2021 年 10 月 12 日(由Junio C Hamano 合并——提交 6a1bb08中,2021 年 10 月 25 日)davvid
gitster

mergetools/xxdiff: 防止段错误停止 difftool

签字人:大卫·阿吉拉尔

用户经常使用 " git difftool" ( man ) HEAD^" 来查看他们的工作,并且将 " mergetool.prompt" 设置为false这样,difftool在比较每个文件之前不会提示他们。

这非常方便,因为用户可以通过xxdiff一次查看一个窗口来查看所有差异。

xxdiff遇到一些二进制文件时会出现问题。
它可以进行段错误并返回退出代码 128,这是git-difftool-helper一种特殊情况,即异常情况会中止进程。

xxdiff当我们看到退出代码 128 时,在其实现中抑制退出代码,diff_cmd()以便GIT_EXTERNAL_DIFF循环继续不间断地到下一个文件,而不是在遇到第一个二进制文件时中止。

于 2021-12-05T01:25:21.727 回答