前几天和同学协同开发的时候遇到了合并冲突问题,git的默认gui又只能Use remote edtion
orUse local edtion
无法进行更加细致的合并。所以我就想配置一个合并工具。
搜索了一番决定使用WinMerge,然后就展开了为期两天的探索。
搜索Git和WinMerge就会出来很多配置教程,我尝试了很多都不行,后来我发现了问题的所在。先说一下我是怎么做的。
我的环境是32位win7+Git-for-windows2.4.5+WinMerge
首先安装好WinMerge,这一步没什么好说的,就是点击下一步就好。记得要点那个把WinMerge添加到环境变量里的选项,如果没选的话下一步需要修改profile文件。
然后配置Git Bash的
PATH
变量,之前很多教程都在说这个PATH
但是都不甚详细。我摸索了一下(怪我自己Linux知识不熟),直接上代码大家应该能看明白。export PATH="$PATH:/c/Program Files/WinMerge/"
。
不过还有一个问题就是上面那句命令只能在不关闭bash前生效,可以去../Git/etc/
里面修改profile文件,在最后一行加上上面那行命令就行。第三步需要下载其他文件,由于我的Git版本是2.4.5,mergetool里面并没有添加对winmerge的支持,但是自从2.5.0之后Git添加了对winmerge的支持,所以我就从Git在github的主页上下载了最新的源码,从源码的
/mergetool/
目录下面copy了一份winmerge文件到../Git/mingw32/libexec/git-core/mergetool/
下面。如果是Git2.x一下的版本目录应该是../Git/libexec/git-core/mergetool/
。完成这三步之后就可以尝试一下了,在bash里面输入
git mergetool --tool-help
。
这时候bash就会列出能够使用的工具,如果winmerge在可用的那一栏里,就标志着可以用了。这时候还得让git知道你要用winmerge了。还需要在bash里面输入以下命令:git config --global merge.tool winmerge
。
但是!但是! 这时候git difftool
还是不能打开winmerge,但是git mergetool
已经可以用winmerge了。更详细的原因还没有研究。
不要吐槽是因为没有设置diff.tool,设置了也不行,所以上面就没说。