首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Git + TortoiseMerge,由于路径名中的空格,无法将文件加载到TortoiseMerge中

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

Stack Overflow用户
提问于 2014-03-06 18:14:43
回答 1查看 982关注 0票数 1

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

我有以下我的.gitconfig:

代码语言:javascript
运行
复制
[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打开得很好,但是当我尝试处理我的文件时,会得到一个错误:

到达该位置的完整路径如下:

代码语言:javascript
运行
复制
C:\Users\Streamus\Documents\GitHub\StreamusServer\Streamus.Tests\Controller Tests\ErrorControllerTest.cs

是否可以使用Git和TortoiseMerge支持这个路径?据我所知,我正在正确地逃离这条路。

EN

Stack Overflow用户

发布于 2015-01-19 01:36:15

创建一个将启动TortoiseMerge的CMD文件:

代码语言:javascript
运行
复制
TortoiseMerge.exe -base:%1 -mine:%2 -theirs:%3 -merged:%4

并在.gitconfig中设置您的合并工具

代码语言:javascript
运行
复制
[merge]
    tool = mytool
[mergetool "mytool"]
    cmd = cmd /C tortoiseMerge-git.cmd "$BASE" "$LOCAL" "$REMOTE" "$MERGED"

背景:

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

TortoiseMerge期望参数看起来如下:-mine:"some path/some file.txt"。如果-mine也包含在引号中,它将无法工作。

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

还请注意,在批处理文件中,%1等将在它们周围有引号,所以不要在批处理文件中添加另一组引号。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22232659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档