6

我已经阅读了关于这个主题的大量问答,并按照信中的所有说明进行操作。但是我仍然在尝试设置 Git 以使用 WinMerge 进行差异和合并时感到头疼。

我使用 Git 终端执行了以下步骤:

git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

我还在我的PATH变量中包含的目录中设置了一个脚本,其内容为:

#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" git /e /u /dl "Base" /dr "Mine" "$1" "$2""

当我执行

git mergetool

在 Git 终端中,我看到:

Merging:
first.txt

Normal merge conflict for 'first.txt':
  {local}: modified
  {remote}: modified
Launching WinMergeU.exe:

所以在我看来,$LOCALand$REMOTE变量没有将任何东西传递给winmerge.sh脚本。我在这里做错了什么?我必须假设它在配置部分。

4

1 回答 1

7

与我之前的答案(或这个那个winmerge.sh)相比,您的步骤在脚本末尾包含一个额外的双引号

    #!/bin/sh
    echo 启动 WinMergeU.exe:$1 $2
    “C:/程序文件/WinMerge/WinMergeU.exe”
      git /e /u /dl "基础" /dr "我的" "$1" "$2""
                                               ^
                                               |
                                    (这不应该在这里)

话虽如此,这些答案是关于 difftool using winmerge,它不支持3 路合并(只有本地和远程,没有基础)。

对于真正的合并工具,我建议kdiff3(如“ git-merge 是否可以忽略行尾差异? ”)或araxis(如“如何将 Araxis 设置为 MSYS git 的差异/合并工具?”中所述) ,您可以在其中看到使用的三个变量(local、remote和 base)。

于 2010-10-28T20:32:36.370 回答