Windows中使用WinMerge作为git默认merge工具

安装WinMerge

下载

1
git config --global -e

或是使用你常用的文本工具打开%USER%/.gitconfig文件,%USER%在windows中一般是C:\Users\下的当前登录系统的用户名目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[user]
name = liuyi
email = liuyi03@sinochem.com
[alias]
st = status
ci = commit
br = branch
co = checkout
df = diff
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
[core]
autocrlf = true
editor = 'd:\\software\\Microsoft VS Code\\Code.exe' --wait
[gui]
recentrepo = E:/projects/smart_front
[difftool]
tool = winmerge
prompt = false
[difftool "winmerge"]
cmd = \"D:/software/WinMerge/WinMergeU.exe\" -e -u -dl \"Old $BASE\" -dr \"New $BASE\" \"$LOCAL\" \"$REMOTE\"
trustExitCode = true
[commit]
template = C:\\Users\\liuyi03\\git_commit_template.txt
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = \"D:/software/WinMerge/WinMergeU.exe\" -e -u -fm -wl -wr -dl \"Local\" -dm \"Base\" -dr \"Remote\" \"$LOCAL\" \"$BASE\" \"$REMOTE\" -o \"$MERGED\"
[mergetool]
trustExitCode = true
keepBackup = false

主要的配置都在mergetool里,需要自己替换WinMerge的安装路径配置

看效果

有一个a.txt文件在同一行中进行了修改,当从远端fetch后进行rebase时发生了冲突
image.png

1
git mergetool

命令行输入如上命令,出现如下界面
image.png
点工具栏中的自动合并图标或使用快捷键Ctrl+Alt+M,出来如下界面
image.png
提示自动合并两处,一处有冲突,选中左边的有冲突的行点工具栏中的复制到右侧Alt+Right)以左边的修改准,如果想以右边的修改为准备则选中右国的有冲突的行点工具栏中的复制到左侧Alt+Left)。
image.png
如果都不对,那么直接在中间进行修改。完成后保存并关闭winmerge。完成冲突解决,如果你的冲突文件同级目录下出现了*.bak的文件,那么需要在winmerge中配置关闭自动备份功能。
菜单 编辑->选项 中的备份文件如下图,两个复选框都去掉
image.png

0%