Windows上的Git Diff和Meld

Jac*_*ieg 16 git git-diff meld msysgit difftool

有没有人让Meld在Windows上与Git合作?我试图让它工作,我没有成功.

我安装了Meld,当我从命令行调用它时有两个文件作为参数,它们很好地区分它们以便正确安装Meld.但是我无法使用Git(Git Diff).我使用的git version 1.8.1.msysgit.1是Git 版本.

我尝试了几件事:我创建了一个shell脚本,meld.sh:

#!/bin/bash
meld.exe "$2" "$5"
echo $2
echo $5
Run Code Online (Sandbox Code Playgroud)

并从Git中使用它:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"D:\\meld.sh\"
Run Code Online (Sandbox Code Playgroud)

我试着把它添加为像这样的difftool:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\" 
Run Code Online (Sandbox Code Playgroud)

或者像这样:

[diff]
    tool = meld

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

但它似乎真的不起作用.我还试图从我的shell脚本中回显第二个($ 2)和第五个($ 5)参数,没有输出.我还尝试过以下几种方式使用批处理脚本:

meld.exe %2 %5
Run Code Online (Sandbox Code Playgroud)

要么

meld.exe %~2 %~5
Run Code Online (Sandbox Code Playgroud)

但它确实不起作用......如何在传播Git到Meld时传递文件的两个版本?这很烦人......

Von*_*onC 22

通常,您可以在Windows上找到类似于此要点的示例,其中包含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\"'
Run Code Online (Sandbox Code Playgroud)

您可以在" Git mergetool with Meld on Windows "中找到更强大的设置,但这个想法保持不变.


OP在评论中报告:

对于difftool,您的命令在以下位置编写以下配置.gitconfig:

[diff]
  tool = meld
[difftool "meld"]
  cmd = meld.exe \\\"$LOCAL\\\" \\\"$REMOTE\\\"
Run Code Online (Sandbox Code Playgroud)

我改为:

[diff]
  tool = meld
[difftool "meld"]
  cmd = meld.exe $LOCAL $REMOTE
Run Code Online (Sandbox Code Playgroud)

一切都很好.


mec*_*sin 6

或者更好的是,如果您在一个锁定的系统中,不允许在路径上胡闹,或者您只是不想污染您的路径空间,您可以将完整路径放入 Meld。

我也更喜欢我当前的工作代码副本显示在左侧,所以我交换了 $REMOTE 和 $LOCAL 参数。还要注意 \ 到 / 的转换,不要为了转义双引号。

[diff]
    tool = meld
[difftool "meld"]
    cmd = \"C:/Program Files (x86)/Meld/meld/meld.exe\" $REMOTE $LOCAL
Run Code Online (Sandbox Code Playgroud)


小智 5

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

[diff]
    tool = meld
[merge]
    tool = meld
[difftool "meld"]
    path = C:/Program Files (x86)/Meld/meld.exe
[mergetool "meld"]
    path = C:/Program Files (x86)/Meld/meld.exe
Run Code Online (Sandbox Code Playgroud)

请注意,"即使路径包含空格,也不需要使用。请记住使用正斜杠而不是反斜杠。