1. 安装 meld
sudo apt-get install meld
2. 创建 git_meld.sh 脚本
cd /usr/bin
vim git-meld.sh
#!/bin/sh
meld $2 $5
3. 修改 git_meld.sh文件的权限
`chmod +x /bin/git-meld.sh`
4. 配置 git 默认的比较工具
git config --global diff.external /bin/git-meld.sh
注意:做个shell的原因是GIT会送7个参数给Meld,但是Meld只需要两个参数,两个需要比较的文件名。所以不能直接用Meld。
5. 修改本地的~/.gitconfig配置文件,加入以下几行配置
[merge]
tool = meld
conflictstyle = diff3
[mergetool "meld"]
cmd = meld $LOCAL $BASE $REMOTE --output=$MERGED --auto-merge
当用户运行git pull或者git pull —rebase产生冲突时,执行git mergetool就会弹出meld 的三路合并界面: meld-3-way-merge
可见界面一共分为3栏,左边一栏为你本地当前文件内容,右面一栏为远端服务器上当前文件内容。 中一栏为本地当前文件原始内容。可见中间一栏meld已经帮你自动合并了,检查无误就可以直接保存 退出了。然后meld帮你自动保存了一份git原始冲突文件xxx.orig,检查无误可以删除此文件。
注:当不同行冲突时,meld会帮你自动合并,当同一行冲突时,meld会以git 冲突文件的格式显示在 中间栏,此时你比较判断<<<<<<< HEAD/=========/>>>>>>>>3行直接的差异手动合并即可。