1. 安装 meld

  1. sudo apt-get install meld

2. 创建 git_meld.sh 脚本

  1. cd /usr/bin
  2. vim git-meld.sh
  3. #!/bin/sh
  4. meld $2 $5

3. 修改 git_meld.sh文件的权限

  1. `chmod +x /bin/git-meld.sh`

4. 配置 git 默认的比较工具

  1. git config --global diff.external /bin/git-meld.sh

注意:做个shell的原因是GIT会送7个参数给Meld,但是Meld只需要两个参数,两个需要比较的文件名。所以不能直接用Meld。

5. 修改本地的~/.gitconfig配置文件,加入以下几行配置

  1. [merge]
  2. tool = meld
  3. conflictstyle = diff3
  4. [mergetool "meld"]
  5. cmd = meld $LOCAL $BASE $REMOTE --output=$MERGED --auto-merge

当用户运行git pull或者git pull —rebase产生冲突时,执行git mergetool就会弹出meld 的三路合并界面: meld-3-way-merge 配置Meld为git的默认比较工具 - 图1

可见界面一共分为3栏,左边一栏为你本地当前文件内容,右面一栏为远端服务器上当前文件内容。 中一栏为本地当前文件原始内容。可见中间一栏meld已经帮你自动合并了,检查无误就可以直接保存 退出了。然后meld帮你自动保存了一份git原始冲突文件xxx.orig,检查无误可以删除此文件。

注:当不同行冲突时,meld会帮你自动合并,当同一行冲突时,meld会以git 冲突文件的格式显示在 中间栏,此时你比较判断<<<<<<< HEAD/=========/>>>>>>>>3行直接的差异手动合并即可。