我一直在努力让tortoisemerge在Git中作为difftool选项工作,目前我的.gitconfig文件显示:
[diff]
tool = tortoise
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE
[difftool]
prompt = false
根据tortoise merge docs,'mine'命令说明右侧显示哪个文件,双向差异。
我的问题是,GIT提供的LOCAL和REMOTE变量实际指向什么? documentation有点模糊,说明
LOCAL设置为包含diff前映像内容的临时文件的名称,REMOTE设置为包含diff后映像内容的临时文件的名称。
当我修改文件,然后输入'git difftool'tortoisemerge时,问题出现在LEFT上的工作目录文件中,而不是正确的。 我知道我只能切换“我的”和“本地”命令,但我试图找出本地/远程指向的内容以及解决此问题的最佳方法
答案 0 :(得分:181)
此处有 4个组件(请注意,在此步骤之前,您已经完成了本地签入。)
答案 1 :(得分:10)
我认为这意味着$LOCAL
始终是差异输出中的a/whatever
,而$REMOTE
是b/whatever
。换句话说,如果你这样做:
git difftool master experiment -- Makefile
$LOCAL
将是一个临时文件,显示Makefile
分支中master
的状态,而$REMOTE
将是一个临时文件,在{{{}}中显示其状态1}}分支。
如果您刚刚运行:
experiment
...显示索引和工作树之间的区别,因此对于每个有差异的文件,git difftool
将是一个临时文件,与索引中文件的版本相同,而$LOCAL
将是工作树中文件的版本。
答案 2 :(得分:1)
我正在使用TortoiseSvn进行合并和差异,并且按预期工作。在diff中,它在右侧显示我的工作副本。 我的.gitconfig与TortoiseSvn如下
[diff]
tool = tortoise
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:\"$REMOTE\" -base:\"$LOCAL\"