TortoiseMerge可以用作Windows Git Bash的difftool吗?

Ric*_*ler 46 git git-diff tortoisegit tortoisegitmerge

我刚开始和Git一起工作.我想使用TortoiseMerge作为difftool和mergetool.

在我的个人用户目录中的.gtconfig中,我有以下部分.我删除了此问题的用户和颜色部分.

[merge]
    tool = tortoisemerge
[mergetool "tortoisemerge"]
    cmd = \"TortoiseMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[diff]
    tool = tortoisemerge
[difftool "tortoisemerge"]
    cmd = \"TortoiseMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
Run Code Online (Sandbox Code Playgroud)

如果我在Git Bash提示符下输入tortoisemerge它会加载.众所周知,它正在路上.但是,如果我输入命令,我会收到以下错误.

Rich:mygittest (master *)
$ git difftool
error: 'tortoisemerge' can only be used to resolve merges
merge tool candidates: kompare emerge vimdiff
No known merge resolution program available.
external diff died, stopping at readme.txt.
Rich:mygittest (master *)
$ 
Run Code Online (Sandbox Code Playgroud)

我不理解这项工作是什么?Tortoisemerge与TortoiseSVN一起安装.

Kla*_*urn 65

以下设置适合我.但是,我使用TortoiseGit而不是TortoiseSVN.请注意diff的参数差异.

[diff]
  tool = tortoisediff
[difftool]
  prompt = false
[merge]
  tool = tortoisemerge
[mergetool]
  prompt = false
  keepBackup = false
[difftool "tortoisediff"]
  cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -mine "$REMOTE" -base "$LOCAL"
[mergetool "tortoisemerge"]
  cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"
Run Code Online (Sandbox Code Playgroud)

  • TortoiseMerge对Git破坏参数的方式存在问题.因为TortoiseMerge使用冒号将参数名称与值分开,所以Git在处理带空格的文件名时会引用两者.TortoiseGitMerge允许空间并解决问题. (2认同)

jwg*_*jwg 7

因此,正确处理带空格的文件名,您应该将@melbourn的答案的最后一行更改为

cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"
Run Code Online (Sandbox Code Playgroud)

  • @jwg我现在已经修改了我的答案,将你的建议考虑在内.谢谢! (2认同)

归档时间:

查看次数:

16054 次

最近记录:

5 年,10 月 前