我想,我已经看到了别人在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.tool
和mergetool
的配置,而不是diff.tool
和difftool
,就像这样:
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?