代码之家  ›  专栏  ›  技术社区  ›  sebastiaan

如何使用WinMerge和Git扩展?

  •  47
  • sebastiaan  · 技术社区  · 15 年前

    我在用 Git Extensions 并预先安装和设置kdiff作为解决合并冲突的diff工具。不过,我非常喜欢WinMerge,我想用WinMerge替换kdiff。

    在Git扩展设置中,有一些设置可以更改合并工具,但我似乎无法确定应该使用什么语法以及为什么要使用。似乎有4个变量:$base、$local、$remote、$merged。似乎我应该将这些传递给winmergeu.exe,但使用哪个命令行参数?

    我试过几次寻找这个问题,但实际上似乎没有一个有效的答案。

    5 回复  |  直到 8 年前
        1
  •  45
  •   Nivedita Velagaleti    8 年前

    概述
    以下是关于如何设置Git版本控制的说明,以便使用比默认安装更好的工具集。安装程序要求已经安装了Git扩展,并且涉及在Git扩展中配置WinMerge。

    安装
    浏览所有提示并安装在WinMerge的默认目录中。

    在Git版本控制中配置WinMerge
    在文本编辑器中打开新文档。 复制/粘贴以下内容并将文档另存为“wmerge.sh”到“c:\program files(x86)\git\bin\”目录。

    echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2"
    

    转到“users->username”目录并找到.gitconfig文件。在您最喜欢的编辑器中打开它复制/粘贴以下代码并保存:

    [user]
        name = enter your name
        email = youremail@yourdomain.com
    [core]
        autocrlf = false
    [merge]
        tool = winmerge
    [mergetool "winmerge"]
        cmd = wMerge.sh \"$MERGED\" \"$REMOTE\"
        path = c:/Program Files (x86)/winmerge/winmergeu.exe
    [mergetool]
        keepBackup = false
        trustExitCode = false
    [diff]
        guitool = winmerge
    [difftool "winmerge"]
        path = c:/Program Files (x86)/winmerge/winmergeu.exe
        cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\"
    

    运行“git extensions”,转到“工具->设置->git extensions->git config”。如果已正确完成安装并将工具引用到其目录,则全局设置页面应如下所示(注意:请在名称和电子邮件中填写您的姓名):

    混合醇: winmerge
    合并工具路径: c:/Program Files (x86)/winmerge/winmergeu.exe
    MERGETOOL命令: wMerge.sh "$MERGED" "$REMOTE"
    扩展工具: Win
    Difftool路径: C:/程序文件(x86)/winmerge/winmergeu.exe
    difftool命令: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

    行尾:按原样签出,按原样提交

    导航到“清单”选项卡以验证Git是否全部为“绿色”,并对您的设置满意。

        2
  •  21
  •   Cristian Diaconescu    11 年前

    在Git扩展2.47.3版上,很容易设置:

    设置->全局设置->在“mergetool”下拉列表中,手动写入: winmerge and watch the miracle.

    与“difftool”下拉列表相同。

    。||||||
    \/\/\/
    

    “winmerge”选项没有预先填充在下拉列表中,这很愚蠢。哦,好吧。

    ->全局设置->在“mergetool”下拉列表中手动写入:WinMerge观看奇迹。

    “difftool”下拉列表相同。

    enter image description here

    ||   ||   ||
    \/   \/   \/
    

    enter image description here

    “winmerge”选项没有预先填充在下拉列表中,这很愚蠢。哦,好吧。

        3
  •  10
  •   TimDog    12 年前

    在Windows7上,这是我最后的工作。注意 "'c:/path/here'" 我的程序文件路径周围的引号。

    [merge]
        tool = winmerge
    [mergetool "winmerge"]
        cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED"
    [diff]
        tool = winmerge
    [difftool "winmerge"]
        cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr
    
        4
  •  8
  •   foraidt    13 年前

    @塞巴斯蒂安的回答对我不起作用(也许它已经过时了?)

    这些是“全局设置”,我可以使用gitextensions 2.28:

    Mergetool: winmerge
    合并工具路径: D:/path/to/WinMerge/WinMergeU.exe
    MERGETOOL命令: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
    这会导致WinMerge使用Git生成的“冲突文件”。
    -e 允许按Esc关闭WinMerge。

    Difftool: WinMerge公司
    Difftool路径: d:/path/to/winmerge/winmergeu.exe文件
    difftool命令: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
    -dl -dr 设置左窗格和右窗格的说明。

        5
  •  3
  •   Pawel Piskorski    12 年前

    在配置文件中添加或更改以下内容:

    [merge]
        tool = winmerge
    [mergetool "winmerge"]
        cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
    

    此解决方案有两种不同的方式:

    1. 简单呼叫 WinMergeU.exe *conflictfile* ,而两侧的呼叫则受到左侧窗口出现的影响。 <<<<<<< , ======= >>>>>>> $merged包含的标记。
    2. 按回购应用mergetool-我正在编辑$git_dir/config文件。同样的结果也可以通过在不使用--system或--global参数的情况下调用git config来实现。这是为了说明 a few scopes of configuration to choose from .

    $program files变量由git bash维护(与本机windows cmd上的类似变量不同),它导航到“program files(x86)”。