错误:无法使用单个值

时间:2018-05-09 05:06:09

标签: git github gitlab

我想将我的git mergetool kdiff3更改为p4merge。因为我在使用kdiff3 mergetool的Windows系统上出错了。

  

/ mingw32 / libexec / git-core / git-mergetool - lib:第128行:C:\ Program   Files \ KDiff3 \ kdiff3:无法执行二进制文件:exec格式错误   application / config / constants.php似乎没有变化。

所以我想改为kdiff3到p4merge,这里我也得到一个像

这样的错误
  

警告:merge.tool有多个值错误:无法覆盖   具有单个值的多个值          使用正则表达式, - add或--replace-all来更改merge.tool。

enter image description here

我该如何解决这个问题? kdiff3或p4merge

1 个答案:

答案 0 :(得分:4)

您的kdiff3安装可能会因为无法正常工作而中断。或者您可能尝试手动编辑配置文件并弄乱其内容。为什么?因为Windows可执行文件通常具有.exe扩展名。您可以尝试再次编辑配置。

无论如何,这不再重要了。如果您想尝试任何其他工具,这是您需要使用的。

git mergetool --tool=p4merge

您的git可能还安装了其他内容。除了兼容其他人之外,您还可以看到所有这些内容。

git mergetool --tool-help

编辑: 仅当您正确设置工具路径时,此命令才有效。否则,您总是得到No files need merging结果。您已经知道如何设置路径,但我会在此处包含其他可能需要的路径。

获取配置项列表:

git config -l

查看您是否已正确设置值(如果有)。然后设置为正确值或删除。

git config --unset mergetool.p4merge.path
git config --add mergetool.p4merge.path "c:/somewhere/p4merge.exe"

编辑: 我将提供一个清洁过程,这些附加命令将有所帮助。

第一步是备份当前设置。最简单的方法是使用这些列表,然后复制粘贴结果。

git config --list
git config --global --list

然后使用这些编辑命令,只需获取配置文件'路径并备份它们(vim显示路径)或保存到编辑器内的其他位置。

git config --edit
git config --global --edit

现在备份准备就绪,只需退出编辑器。如果不是真的需要,不要尝试手动编辑。

git config --unset name
git config --global --unset name
git config --remove-section name
git config --global --remove-section name

merge.toolmergetool.namediff.tooldifftool.name是清洁的。再次列出配置时,您不应该看到这些名称。本地和全球应单独清理。

然后将我们刚刚清理过的那些放回去。但这次首先尝试使用本地配置,然后在全局设置成功。

git config merge.tool name
git config mergetool.name.property value
git config diff.tool name
git config difftool.name.property value

此处property类似于cmdpathvalue是您可以从备份中复制的值。现在重要的是一开始就set only 1 tool

关于路径的最后一件事。您(OP)似乎使用类似Linux的环境,因此使用/代替\\会使pathcmd更易于理解。