Windows上的Git Diff和Meld

问题描述 投票:16回答:5

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

我安装了Meld,当我从命令行调用它时有两个文件作为参数,它们很好地区分它们以便正确安装Meld。但是我无法使用Git(Git 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

但它真的不起作用......我如何通过q​​azxswpoi文件的两个版本在传播到Meld时使用?这很烦人......

git msysgit git-diff meld difftool
5个回答
21
投票

通常,您可以在Windows上找到类似于Git的示例,其中meld.exe位于您的this gist中):

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\"' ”中找到更强大的设置,但这个想法保持不变。


OP在评论中报告:

对于Git mergetool with Meld on Windows,您的命令在difftool中编写以下配置:

.gitconfig

我改为:

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

一切都很好。


4
投票

或者甚至更好,如果你是一个锁定系统,不允许愚弄路径,或者你只是不想污染你的路径空间,你可以直接进入Meld的完整路径。

我也更喜欢我当前正在运行的代码副本显示在左侧,所以我交换了$ REMOTE和$ LOCAL参数。还要记住\ to /的转换,并且不要转义双引号。

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

2
投票

对于Windows 7(甚至其他版本的Windows),请在[diff] tool = meld [difftool "meld"] cmd = \"C:/Program Files (x86)/Meld/meld/meld.exe\" $REMOTE $LOCAL 文件中添加这些行。

.gitconfig

请注意,即使包含空格,也不需要使用[diff] tool = meld [merge] tool = meld [difftool "meld"] path = C:/Program Files (x86)/Meld/meld/meld.exe [mergetool "meld"] path = C:/Program Files (x86)/Meld/meld/meld.exe 作为路径。只记得使用正斜杠而不是反斜杠。


1
投票

我尝试了几种尝试用"设置路径无效。因为我想从Git Bash控制台窗口使用Meld,所以工作是将路径导出到Meld目录,重新启动Bash shell并且看看git configgit difftool --tool-help现在识别Meld,我可以选择它作为我的首选工具。

。轮廓

git mergetool --tool-help

的.gitconfig

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

1
投票

用户从gitk调用diff的另一个提示(通过右键单击上下文菜单项“External Diff”):

以上设置可能会被gitk的首选项覆盖。在这种情况下,更改gitk菜单编辑→首选项→常规→外部差异设置中的工具。

© www.soinside.com 2019 - 2024. All rights reserved.