git 冲突时,如果优雅的使用svn的GUI界面处理冲突
前置说明
- 使用两个账号,来模拟冲突场景。第一个账号叫马姐姐,第二个账号是马大哥。场景是:马姐姐提交了一版代码,先行提交,马大哥后续提交,出现错误,发现有两个文件有冲突,那么要在马大哥这端合并解决冲突再提交。
- 需要安装 Git Bash 和svn
实验开始
马姐姐端
- 添加两个文件
- 提交到 远程 github
马大哥端
-
提交两个文件,未提到远端。
-
提交远程,发现冲突。
意思是:远程库的内容,有的你还没有,需要用git pull。 -
用 git pull (也可以用 git fetch 再 git merge,这两个合起来 类似 git pull )
这里说 矛盾,冲突,让 merge 冲突 test2 和 test1 。git的自动合并无法解决,让手动合并。可以看到分支切换到了 master|MERGING -
用 git diff (可以查看哪些文件有冲突,但是无法修改)
<<<<<< HEAD 到 =========之间是自己的和他人的冲突部分
==========到 >>>>>7700f84 是其他人的自己的冲突部分。(如果使用git内置合并工具,请搜索 git mergetool ,这里不做解释) -
用svn 的GUI进行修改。
- 点击其中的一个文件
- 界面解释
左上角是远程的冲突文件。
右上角是自己的冲突文件。
下面是合并后的结果预览。
PS: 点击右上角的蓝色问号,是更多的帮助文档,比如+ - 红色区域,黄色区域的各种图标的解释。(这里只说明我个人觉得最实用的地方) - 想要的最终的效果
马姐姐1—test1
马大哥2—test1
马姐姐3—test1
马大哥4—test1
马姐姐5—test1
马大哥6—test1 - 操作说明
左侧和右侧,鼠标右键后的面板如下:
use this text block 用这个文本块
use this whole file 使用这个整个文件
use text block from right before left 先使用右边的文本块再用左边的
use text block from left before right 先使用左边的文本块再用右边的
下方,鼠标右键后的面板(和上面两个差不多): - 开始合并:
先用左边第一行
下面的显示效果: - 使用右边的第2行
下面的显示效果:
- 一段操作类似上面的后(如果没有!说明合并冲突结束了)
- 保存修改
点击 save之后,弹出窗口,提示还有没有冲突,没有冲突,点击ok,就可以右上角关闭了。 - 回到 git diff 界面:
test1 变成modified ,
依照上面的方法,解决test2冲突。可以点击 commit 进行提交(我这里使用git bash .) - 可以看出当前还是在合并状态
让使用 git commit
提交
如果使用 git commit 这样会自动生成commit 说明,可以修改,使用和vi一样,:wq 保存退出(也可以使用命令这种方式进行提交, git commit -m “合并说明”) - commit 结束
- 冲突全部结束
让 push - git push
ok 结束