git 冲突时,如果优雅的使用svn的GUI界面处理冲突

前置说明

  1. 使用两个账号,来模拟冲突场景。第一个账号叫马姐姐,第二个账号是马大哥。场景是:马姐姐提交了一版代码,先行提交,马大哥后续提交,出现错误,发现有两个文件有冲突,那么要在马大哥这端合并解决冲突再提交。
  2. 需要安装 Git Bash 和svn

实验开始

马姐姐端

  • 添加两个文件
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 提交到 远程 github
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突

马大哥端

  1. 提交两个文件,未提到远端。
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突

  2. 提交远程,发现冲突。
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    意思是:远程库的内容,有的你还没有,需要用git pull。

  3. 用 git pull (也可以用 git fetch 再 git merge,这两个合起来 类似 git pull )
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    这里说 矛盾,冲突,让 merge 冲突 test2 和 test1 。git的自动合并无法解决,让手动合并。可以看到分支切换到了 master|MERGING

  4. 用 git diff (可以查看哪些文件有冲突,但是无法修改)
    <<<<<< HEAD 到 =========之间是自己的和他人的冲突部分
    ==========到 >>>>>7700f84 是其他人的自己的冲突部分。(如果使用git内置合并工具,请搜索 git mergetool ,这里不做解释)
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突

  5. 用svn 的GUI进行修改。

git 冲突时,如果优雅的使用svn的GUI界面处理冲突

  • 点击其中的一个文件
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 界面解释
    左上角是远程的冲突文件。
    右上角是自己的冲突文件。
    下面是合并后的结果预览。
    PS: 点击右上角的蓝色问号,是更多的帮助文档,比如+ - 红色区域,黄色区域的各种图标的解释。(这里只说明我个人觉得最实用的地方)
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 想要的最终的效果
    马姐姐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 先使用左边的文本块再用右边的
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    下方,鼠标右键后的面板(和上面两个差不多):
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 开始合并:
    先用左边第一行
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    下面的显示效果:
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 使用右边的第2行
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突下面的显示效果:
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 一段操作类似上面的后(如果没有!说明合并冲突结束了)
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 保存修改
    点击 save之后,弹出窗口,提示还有没有冲突,没有冲突,点击ok,就可以右上角关闭了。
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 回到 git diff 界面:
    test1 变成modified ,
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    依照上面的方法,解决test2冲突。可以点击 commit 进行提交(我这里使用git bash .)
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 可以看出当前还是在合并状态
    让使用 git commit
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    提交
    如果使用 git commit 这样会自动生成commit 说明,可以修改,使用和vi一样,:wq 保存退出(也可以使用命令这种方式进行提交, git commit -m “合并说明”)
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • commit 结束
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • 冲突全部结束
    让 push
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
  • git push
    git 冲突时,如果优雅的使用svn的GUI界面处理冲突
    ok 结束