我的.gitconfig
文件中包含以下内容:
[user]
name = myname
email = [email protected]
[core]
autocrlf = true
excludesfile = C:\\Users\\myname\\Documents\\gitignore_global.txt
[diff]
tool = meld
[difftool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
prompt = false
[merge]
tool = meld
[mergetool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = true
并且在Sourcetree中,我有以下设置:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9HTlp0OS5wbmcifQ==” alt =“在此处输入图像描述”>
但是,当我右键单击Sourcetree上的文件以进行外部比较时,我可以打开Meld,但是文件的内容根本没有显示。
我在设置上做错了什么?
我认为现有答案略有偏离重点。这是我自己的狗粮:
参数详细信息:
Diff: $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
对于External Diff
,您需要从参数列表中删除$ BASE。
对于三路合并,您需要单击External Merge Tool
选项,仅当存在任何未解决的冲突时,该选项才可用。
如果您不局限于Sourcetree + Meld,我认为Git Extensions + KDiff3套件也可以是一个很好的开源替代方案。
此处使用的实际设置是为了进行真正的三向合并,并带有只读的THEIRS和MINE选项卡:
$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
注意=
之后的--output
。
我终于通过对此问题的第二个答案Git merging using Meld的注释中找到了正确的命令。
如果您不想修改PATH环境变量,则可以使用DOS兼容的短名称:
C:\Progra~1 = C:\Program Files
C:\Progra~2 = C:\Program Files (x86)
这避免了在路径中造成麻烦的空间,并且与Sourcetree配合得很好。它有点黑,但是可以用。然后,您可以使用类似这样的路径作为Meld的路径:
C:\Progra~1\Meld\meld.exe
无法保证Progra〜1映射到64位目录,因此您可能需要尝试将哪个映射到哪个。
尝试将meld.exe的位置添加到您的PATH(例如C:\ Program Files(x86)\ Meld),然后在Diff Command中,输入meld而不是完整路径。参见要点How to use meld with Sourcetree on Windows。