使用Git+;TortoiseMerge,由于路径名中有空格,无法将文件加载到TortoiseMerge

使用Git+;TortoiseMerge,由于路径名中有空格,无法将文件加载到TortoiseMerge,git,tortoisegit,tortoisegitmerge,Git,Tortoisegit,Tortoisegitmerge,我正在尝试使用Tortoise的DiffMerge工具来解决git合并冲突 我的.gitconfig文件如下: [diff] tool = tortoisediff [difftool] prompt = false [merge] tool = tortoisemerge [mergetool] prompt = false keepBackup = false [difftool "tortoisediff"] cmd = \""c:/Program Files/To

我正在尝试使用Tortoise的DiffMerge工具来解决git合并冲突

我的.gitconfig文件如下:

[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"
TortoiseGit可以正常打开,但是当我尝试使用我的文件时,我得到了一个错误:

该位置的完整路径如下所示:

C:\Users\Streamus\Documents\GitHub\StreamusServer\Streamus.Tests\Controller Tests\ErrorControllerTest.cs

是否可以使用Git和tortoiser支持此路径?据我所知,我正在正确地转义路径。

创建一个CMD文件,该文件将启动Tortoise:

TortoiseMerge.exe -base:%1 -mine:%2 -theirs:%3 -merged:%4
并在
.gitconfig
中设置合并工具:

[merge]
    tool = mytool
[mergetool "mytool"]
    cmd = cmd /C tortoiseMerge-git.cmd "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
背景:

Git在内部使用Windows版本的sh。如果启动命令,它将正确处理文件名中的空格。如有必要,包含空格的参数用引号括起来。但我还没有找到一种方法来强迫你在辩论中引用字面意思

OrtowisEmerge希望参数如下所示:
-mine:“some path/some file.txt”
。如果-我的也包含在引号中,它将不起作用

因此,我们可以创建一个批处理文件,它只在路径前面粘贴-mine:,但是在那里我们遇到了另一个错误:如果使用批处理文件作为命令,那么CMD文件将由sh而不是CMD解析,因此我们使用/C开关显式调用CMD来执行命令


另外请注意,在批处理文件中,
%1
等将在其周围加上引号,因此不要在批处理文件中添加另一组引号。

是否应该是
“\”c:/Program Files/Ortoisegit/bin/Ortoisegitmerge.exe\”
?嗯,它正在成功地找到Ortoisegitmerge,所以我不确定问题出在这一部分?我认为它是在处理远程/基地/本地的东西。我认为它应该是这样的:不!也不行。嫌疑犯和新版本的乌龟有关。最坏的情况下,你可以试试WinMerge