看一下我的配置:
andrew@andrew-pc:/$ git config -l
user.email=wulong710@163.com
usr.name=wulong
merge.tool=kdiff3
mergetool.kdiff3.path=/usr/bin/kdiff3
设置kdiff3为比较工具。还是beyond compare方便,但linux下设置有点麻烦。先kdiff3凑合用
1.kdiff3路径
:/$ which kdiff3
/usr/bin/kdiff3
2.设置kdiff3为比较工具
$ git config --global merge.tool kdiff3
$ git config mergetool.kdiff3.path "/usr/bin/kdiff3"
3.git 合并分支
比如: test_pro工程有两个分支 english , chinese。想将 english合并到chinese分支中
(1)git checkout chinese
(2) git merge english
(3)合并失败,提示有冲突未解决
$ git merge english
自动合并 res/values/strings.xml
冲突(内容):合并冲突于 res/values/strings.xml
自动合并失败,修正冲突然后提交修正的结果。
(4)git mergetool
Merging:
res/values/strings.xml
Normal merge conflict for 'res/values/strings.xml':
{local}: modified file
{remote}: modified file
Hit return to start merge resolution tool (kdiff3):
(5)回车,见到kdiff3界面,点击A ,B, C三个按钮,选择正确的代码进行合并。
(6)保存,关闭。解决了一个文件冲突,如果还有别的文件冲突,则会提示继续比较下一个冲突文件,直到所有冲突解决完毕为止。
(7)git add .
(8)git commit -am "解决完了"
(9)git log -3
(10)看到把english 分支合并过来了
另一个博客的说明:
-
下载kdiff3
https://sourceforge.net/projects/kdiff3/files/kdiff3/
Download kdiff3-0.9.98-MacOSX-64Bit.dmg (10.3 MB) -
设置kdiff3为git mergetool
$ git config --global merge.tool kdiff3 $ git config --global mergetool.kdiff3.path \ /Applications/kdiff3.app/Contents/MacOS/kdiff3"
-
git rebase的时候,如果出现冲突
$ git mergetool
会自动运行kdiff3 (类似BeyondCompare的图形化界面)
定位到冲突点之后,使用键盘快捷键cmd+2
选择local,cmd+3
选择remote 非常方便解决完所有冲突之后,保存退出。命令行继续: $ git add . $ git rebase --continue 重复步骤3 直到完成rebase操作
-
解决文件冲突之后,kdiff3会在冲突文件目录生成 <文件名>.orig,需要在.gitignore里面添加一行:
$ echo "*.orig" >> .gitignore
如果想要保持目录干净,可以用命令删除所有的.orig文件.
find ./ -name "*.orig" |xargs rm -f