我刚开始使用Git工作。 我想用的TortoiseMerge作为difftool和合并工具。
在我在我的个人用户目录.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提示符IT负载类型的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 *)
$
什么我不理解,使这项工作? 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"
因此,与空格的文件名正确处理,你应该@墨尔本的回答的最后一行更改为
cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$REMOTE" -mine "$LOCAL" -merged "$MERGED"
大答案由克拉斯Mellbourn! 救了我洛塔时间。 一个缺点是,新Added
或Removed
存储库中的文件difftool命令执行过程中不会出现。 没有什么可以比较他们! 这就是我所做的在此之上:(由我的同事的启发答案 )。
- 创建一个文件名为
empty.empty
在$Home
目录(执行start ~
在你的bash)。 而顾名思义,保持空。 - 创建名为另一个文件
tortoisediff.sh
在$Home/bin
目录与以下内容
:
#!/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
修改你的.gitconfig文件(答案的11号线)
cmd = tortoisediff.sh "$LOCAL" "$REMOTE"
现在,这将使difftool参考而不是直接tortoisediff.sh打开应用程序的。
- 请记住:你必须运行
git add .
随后git difftool --staged
,而不是简单git difftool
。
[diff]
tool = tortoisediff
[difftool]
prompt = false
[merge]
tool = tortoisemerge
[mergetool]
prompt = false
keepBackup = false
[difftool "tortoisediff"]
cmd = \""C:/Users/$USER/Desktop/TortoiseMerge.exe"\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[mergetool "tortoisemerge"]
cmd = \""C:/Users/$USER/Desktop/TortoiseMerge.exe"\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
这个工作对我来说,使用TortoiseMerge 1.6.7(便携式)
重订的时候,我强烈建议开关$theirs
和$mine
,因为它是不同的,当你合并和变基合并。 点击这里:
什么是git的“我们”和“他们”的确切含义是什么?
所以,如果你只使用合并工具来衍合像我一样,这样做:
[mergetool "tortoisemerge"]
cmd = \""c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe"\" -base "$BASE" -theirs "$LOCAL" -mine "$REMOTE" -merged "$MERGED"