2013-11-27 106 views
14

有没有人有MeldGit一起工作Windows? 我想让它工作,我没有成功。Git在Windows上的差异和融合

我安装了meld,当我从命令行调用它作为参数的两个文件时,它会很好地区分它们,所以meld安装正确。但是我不能让它与GitGit Diff)一起工作。我使用Git的版本git version 1.8.1.msysgit.1

我已经试过几件事情: 我创建了一个shell脚本meld.sh

#!/bin/bash 
meld.exe "$2" "$5" 
echo $2 
echo $5 

,并从git的使用它:

[diff] 
    tool = meld 

[difftool "meld"] 
    cmd = \"D:\\meld.sh\" 

我试图将其添加为这样的difftool:

[diff] 
    tool = meld 

[difftool "meld"] 
    cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\" 

或者像这样:

[diff] 
    tool = meld 

[difftool "meld"] 
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED' 

但它确实似乎没有工作。我也尝试从我的shell脚本中回显第二个($ 2)和第五个($ 5)参数,并且没有输出。

meld.exe %2 %5 

meld.exe %~2 %~5 

,但它确实没有工作...有谁知道我怎么能传递文件Git用途的两个版本:我使用批处理脚本在几个方面也尝试过当差价为Meld? 这是烦了......

回答

19

通常情况下,你可以找到在Windows类似this gist例如,meld.exe在被你PATH

git config --global merge.tool meld 
git config --global mergetool.meld.cmd 'meld.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"' 

git config --global diff.tool meld 
git config --global difftool.meld.cmd 'meld.exe \"$LOCAL\" \"$REMOTE\"' 

您可以在“Git mergetool with Meld on Windows”找到一个更强大的设置,但这个想法依然如此。


在评论OP报告:

For the difftool , your commands write the following configurations in .gitconfig :

[diff] 
    tool = meld 
[difftool "meld"] 
    cmd = meld.exe \\\"$LOCAL\\\" \\\"$REMOTE\\\" 

我把它们改成:

[diff] 
    tool = meld 
[difftool "meld"] 
    cmd = meld.exe $LOCAL $REMOTE 

and everything worked fine.

+0

我与你的方法,但它不能正常工作。主怎么它看起来像:http://i.imgur.com/KIaVb04.png。如果您在理解的路径,请让我知道的任何问题,我躲在用户名和文件名的一部分。 –

+0

管理,使'difftool'工作。有没有跟你'mergetool'但chanses是仄将工作一样。对于'difftool'你的命令写去volgende配置in' .gitconfig': '[DIFF] \t工具=登录 [difftool”符号 “] \t CMD = meld.exe \\\” \\\ $ LOCAL “\\\” $ REMOTE \\\'' 我把它们改成: ' [DIFF] \t工具=登录 [difftool “符号”] \t CMD = meld.exe $ LOCAL $ REMOTE' 一切工作得很好。我将与'mergetool'稍后再试,但我会接受你的意见:) 谢谢! –

+1

@JasonSwartz很大。我已经包括在回答更多的可见性的评论。 – VonC

3

甚至更​​好,如果你对一个锁定系统,其中与路径蠢事是不允许的,或者你只是不想污染你的路径空间,你可以把完整的路径融合。我也更喜欢我的当前工作代码副本显示在左侧,所以我交换了$ REMOTE和$ LOCAL参数。还要注意\到/的转换,而不要让转义双引号。

​​
0

对于Windows 7(甚至其他版本的Windows),在.gitconfig文件中添加这些行。

[DIFF]

工具=登录

[合并]

tool = meld 

[difftool “符号”]

path = C:/Program Files (x86)/Meld/meld/meld.exe 

[合并工具 “符号”]

path = C:/Program Files (x86)/Meld/meld/meld.exe 

请注意,有没有必要有“”“的路径,即使有空间,只是要记得使用前的SLA,而不是落后。

+0

它可以在Windows Server 2012 R2开箱即用。找到最简单的解决方案。 – pperejon

1

我与你几个变化或试图与git config路径设置无济于事。因为我想用状态从混帐bash的控制台窗口,干了什么工作是路径导出到日志目录,重新启动的bash shell和LO &看哪git difftool --tool-helpgit mergetool --tool-help现在herkennen状态,我可以选择它作为我的首选工具。

的.profile

export PATH=/c/Program\ Files\ \(x86\)/Meld/:$PATH 

的.gitconfig

[merge] 
    tool = meld 
[diff] 
    tool = meld 
1

另一个提示用户在右键单击上下文菜单项“外部差别”调用从gitk(DIFF ):

上面的设置也许能对gitk的喜好骑,在这种情况下,改变工具gitk的“编辑” - >“首选项” - >“常规” - >“外部差异”设置。