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

我刚刚开始与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\" 

如果我在Git Bash提示符下键入tortoisemerge,则会加载。 这是已知的路上。 但是,如果我input命令,我得到以下错误。

 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 *) $ 

做这个工作我不了解什么? Tortoisemerge与TortoiseSVN一起安装。

以下设置适合我。 不过,我使用的是TortoiseGit而不是TortoiseSVN。 注意差异参数的差异。

 [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" 

所以用空格的文件名处理正确,你应该改变@ melbourn的答案的最后一行

 cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED" 

很好的回答! 为我节省了很多时间。 一个缺点是,在difftool命令执行过程中,新添加或删除的文件将不会显示出来。 以下是我所做的:(受到同事的回答启发)。

  1. $Home目录(C:/ home)中创build一个名为empty.empty的文件。 顾名思义,保持空白。
  2. $Home/bin目录(C:/ home / bin)中创build另一个名为tortoisediff.sh文件,内容如下

 #!/bin/sh # $LOCAL $REMOTE seem to be swapped # $1 is $LOCAL # $2 is $REMOTE difftool='/c/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe' NULL="/dev/null" empty="C:/home/empty.empty" if [ "$1" == "$NULL" ]; then echo "Added: " "$2" "$difftool" /base:"$empty" /mine:"$2" /readonly:"$empty" elif [ "$2" == "$NULL" ]; then echo 'Removed: ' "$1" "$difftool" /base:"$1" /readonly:"$1" /mine:"$empty" else echo 'Modified' "$2" "$difftool" /base:"$1" /basename:"$1" /readonly:"$1" /mine:"$2" /minename:"$2" fi # Checkout https://tortoisegit.org/docs/tortoisegitmerge/tme-automation.html for more 
  1. 修改你的.gitconfig文件(第11行的答案)

    cmd = tortoisediff.sh "$LOCAL" "$REMOTE"

这将使difftool引用tortoisediff.sh而不是直接打开应用程序。

  1. 请记住:你必须运行git add . 其次是git difftool --staged而不是简单的git difftool