【问题标题】:git: no mergetool availablegit:没有可用的合并工具
【发布时间】:2018-05-05 08:11:17
【问题描述】:

我打算将 winmerge 与 GitHubDesktop 一起设置为我的合并工具。在我实现https://gist.github.com/shawndumas/6158524 之前,出于好奇,我尝试运行 git mergetool -- tool-help。我收到“以下工具有效,但当前不可用。”参考 git 文档 (https://www.git-scm.com/docs/git-mergetool),我了解到,在这一点上,合并后不会发生冲突解决。我说的对吗?

谢谢

【问题讨论】:

  • 我认为所选答案 (Matt Clark) 不适合您的问题。如果我错了,请纠正我,但是您询问了即使在您没有配置合并工具的情况下 git 是否能够自动解决冲突。 MergeTool 不负责自动解决冲突……实际上这是 git 内部处理的部分。当您致电git merge 时,自动解决方案就完成了。如果它不能解决所有冲突,git 会要求用户手动干预,这可以通过简单的编辑器或合并工具来完成。

标签: git mergetool


【解决方案1】:

关于您在我看来没有(正确)答案的问题:

参考 git 文档 (https://www.git-scm.com/docs/git-mergetool),我知道,在这一点上,合并后不会发生冲突解决。我说的对吗?

git 不会尝试使用 mergetools 自动解决冲突,这些工具只是手动(但使用 GUI)解决 git 无法解决的问题。

所以即使你没有配置 winmerge,当你执行 git merge 时,git 也会尝试使用其内部的冲突解决算法来解决冲突。 如果要合并的版本之间的差异在不同文件或同一文件的不同块中,git解决它们,否则git用>>标记冲突区域。

合并工具只是为您提供了一种方法来告诉您如何解决这些剩余的冲突。

【讨论】:

  • 我不会说之前的答案是不正确的,但你的答案绝对是非常清晰和准确的。谢谢你。
  • 很高兴它对您有所帮助...如果您感谢它,当您获得更多声誉时(我认为现在您不能这样做)记住这一点并返回单击向上箭头我的回答给我一分;-)
【解决方案2】:

你需要配置 git 来寻找合适的工具:

git config --global merge.tool winmerge

如果应用程序无法自动定位,您可能需要指定二进制文件的确切路径

git config --global mergetool.winmerge.path C:/Program\ Files/Winmerge/path/to/binary.exe

然后再试一次。

【讨论】:

  • 也许我需要澄清我的问题。我只是好奇发生了什么之前我什至尝试安装和配置winmerge。我的理解是,现在,由于没有可用的合并工具,因此不会有冲突解决。因此 GitHubDesktop 将宣布冲突,但不会尝试解决它。​​
  • 正确,就好像您关闭了合并工具而不执行任何操作一样。这些文件仍将具有检测到冲突的<<< === >>> git 标记。
猜你喜欢
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 2015-10-22
  • 2012-08-01
  • 2020-05-10
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多