我怎样才能让我的WinMerge混帐合并工具?我怎样才能让我的WinMerge混帐合并工具?(How

2019-05-14 10:20发布

我想,我已经看到了别人在Windows 7旗舰版之前做的WinMerge使用Git集成。

我已经按照下面的步骤,但错误继续出现,当我做一个git合并工具默认为Vimdiff可以。

创建了一个名为winmerge.sh在混帐的根目录下的文件:C /程序文件(x86)/混帐/有:WinMergeU是正确的位置。

#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files (x86)/WinMerge/WinMergeU.exe" 
git /e /u /dl "Base" /dr "Mine" "$1" "$2"

和所使用的以下命令。

git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

该错误显示为:

git config option merge.tool set to unknown tool: winmerge

Answer 1:

你说的是合并工具 ,但你(和其他一些人的答案)都将其配置为一个diff工具

要配置一个合并工具,你需要使用merge.toolmergetool的配置,而不是diff.tooldifftool ,就像这样:

git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
git config --global mergetool.prompt false

然后你可以使用

git mergetool

这将打开您的两个文件进行编辑。

荣誉对于@dvdvck的意见提的是,在命令行参数可以指定为的WinMerge(outputpath参数)的结果文件中的第三个文件。

为了完整起见,我会提到,也有这个主旨针对的WinMerge的全配置既作为diff和合并工具。



Answer 2:

Git的2.5+(Q2 2015)将包括的WinMerge为已知的git mergetool

如果是的WinMerge您%PATH%一个git config merge.tool winmerge是所有你需要做的!
(它适用于比较工具太: git config diff.tool winmerge

见提交3e4f237由大卫·阿吉拉尔( davvid ) ,2015年5月20日。
(通过合并JUNIOÇ滨野- gitster -在提交324a9f4 ,2015年6月1日)
帮助-通过: 菲利普·奥克利( PhilipOakley ) , 约翰内斯Schindelin( dscho ) , 塞巴斯蒂安Schuberth( sschuberth ) , SZEDER的Gabor( szeder

所有的配置现在在Git的本身做了您直接与mergetools/winmerge

  • diff命令: "$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
  • 合并命令: "$merge_tool_path" -u -e -dl Local -dr Remote "$LOCAL" "$REMOTE" "$MERGED"

mergetools :添加的WinMerge作为一个内置的工具

添加的WinMerge scriptlet的与所述的命令这个线程 ,从而使用户可以使用的WinMerge而无需执行任何其他配置。



Answer 3:

如果你决定使用SourceTree(或任何谷歌搜索与SourceTree),你可以通过设置合并工具来定制,指点diff命令WinMergeU.exe,通常使用的WinMerge为合并工具:

C:\Program Files (x86)\WinMerge\WinMergeU.exe

在参数使用:

-e -u -dl "Mine" -wr -dr "Theirs" $LOCAL $REMOTE $MERGED

这将导致左侧(标记为“矿”)为可编辑,这将是输出文件时,你的WinMerge保存。 右侧(标记为“他们”)将是只读(这是-wr参数),这是必要的,因为的WinMerge输出保存的所有文件复制到$合并的文件,因此,如果双方进行了编辑,它会输出左侧则覆盖,与右侧; 最好避免那种混乱。

如果你把备份文件选项打开,会的WinMerge生成一个.bak文件。 本文件的内容要么是原来的左侧文件,或倒数第二个输出文件,如果你多次保存。 您可以关闭此功能,或添加名为* .bak到你的.gitignore文件。

Git的本身将创建一个* .orig这样,冲突文件后解决了冲突,以防万一你把事情弄糟了。 同样,你可以添加* .orig这样,你的.gitignore文件或关闭此功能。 不幸的是,SourceTree不具备这样的GUI选项,所以启动你的Git的bash或者,如果你选择在安装过程中正确的路径选项中,在Windows命令提示符并做到这一点:

git config --global mergetool.keepBackup false

这将阻止Git的创建* .orig这样的文件。 您也可以直接在你的用户目录的根定位的.gitconfig文件编辑配置文件。 如果你知道如何使用VIM,你可以编辑与此命令整个事情:

git config --global --edit


Answer 4:

这里是我(在%userprofile%\.gitconfig或者~/.gitconfig在* nix),无包装(赢7家庭专业版):

[diff]
    tool = winmerge
[difftool "winmerge"]
    cmd = c:/path/to/winmergeu.exe -e -u -x -wl -wr -dl "base" -dr "mine" \"$LOCAL\" \"$REMOTE\"


Answer 5:

这是比较容易做,是我工作:

git config --global diff.tool winmerge

git config --replace --global difftool.winmerge.cmd "\"C:\path to winmerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" $LOCAL $REMOTE"

git config --global difftool.prompt false


Answer 6:

你的路径不正确,应该是"/c/Program Files (x86)/WinMerge/WinMergeU.exe"

你在shell脚本环境中运行,而不是原生Windows命令提示符。



Answer 7:

要做到的WinMerge作为比较和合并为Visual Studio 2017年的Git插件工具:

从Windows命令提示符:输入>>混帐配置--global --edit这将打开.getconfig文件进行编辑。

请在下面的命令更新:

[mergetool]
   prompt = false
   keepBackup = false
   keepTemporaries = false
[merge]
   tool = winmerge
   [mergetool "winmerge"]
   name = WinMerge
   trustExitCode = true
   cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[diff]
   tool = winmerge
   [difftool "winmerge"]
   name = WinMerge
   trustExitCode = true
   cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -u -e $LOCAL $REMOTE


Answer 8:

与此hassling了一个多小时后,我安装tortoisegit ,到目前为止,它给我我想要的东西。

为龟GIT中的WinMerge的设置的说明, http://thoai-nguyen.blogspot.com.au/2012/03/setup-tortoise-git-and-winmerge.html



Answer 9:

例:

git config --global --add diff.tool winmerge
git config --replace --global difftool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" $LOCAL $REMOTE"
git config --global difftool.prompt false


Answer 10:

通过命令行输入的设置已涵盖其他的答案。 该.gitconfig与全面的WinMerge 3路合并文件可能像这样被配置(本例中是从Windows):

[merge]
    tool = WinMerge

[mergetool "WinMerge"]
    cmd = \"C:\\Program Files\\WinMerge\\WinMergeU.exe\" -e -u -dl \"Local\" -dm \"Base\" -dr \"Remote\" \"$LOCAL\" \"$BASE\" \"$REMOTE\" -o \"$MERGED\"
    trustExitCode = true
    keepBackup = false

[diff]
    tool = WinMerge

[difftool "WinMerge"]
    cmd = \"C:\\Program Files\\WinMerge\\WinMergeU.exe\" -e -u -dl \"Old $BASE\" -dr \"New $BASE\" \"$LOCAL\" \"$REMOTE\"
    trustExitCode = true

标志信息:

  • / E - 允许的WinMerge经由“ESC”键的单次按压关闭。
  • / U - 从最近使用的列表记录文件,防止的WinMerge。
  • / DL / DM,和/ DL - 为左,中,右窗格描述。
  • / O - 输出文件。 保存任何窗格将输出窗格中的内容输出文件。

trustExitCode = true告诉GIT中接受没有进一步提示的输出。

keepBackup = false会自动删除自动生成的*.orig的文件。

注:$ BASE和$使用difftool双方只包含文件名如果在合并的变量。



文章来源: How can I make WinMerge my git mergetool?