zoukankan      html  css  js  c++  java
  • GitKraken使用教程-基础部分(9)

    10.  合并分支并解决冲突(conflict)

    1) 合并分支

    在代码管理过程中,切换分支或者同步服务器代码时,常常会出现代码冲突的情况,这种情况出现的原因一般是由于两个分支对同一个文件进行修改,

    当把这两个分支进行合并时就有可能会出现冲突(pull远程服务器上的代码是一样的道理)。

    以Test仓库为例,主分支 master 对19264.h文件进行了修改并进行了多次提交,在主分支中对19264.h文件的 lcd_delay_us 函数进行了修改(增加了几条注释),

    而另一条分支 testconflict 删除了该文件中的这一函数(也可以是添加了其它的注释或者改动这一部分的代码)。

    也就是说,19264.h头文件被多次修改了(在实际的代码编写过程中,一般就对应着多人修改同一个文件的情况)

    图 4‑1 提交记录

    右键点击testconflict分支,在下拉菜单中选择Merge testconflict into master 这一项:

    图 4‑2 下拉菜单

    程序将会尝试将testconflict分支并入master分支。然而这两条分支是有代码冲突的,接下来程序就会在最新的提交记录位置提示我们:

    图 4‑3代码冲突提示

    2) 代码出现冲突

    合并分支出现代码冲突后,程序右侧将会给出发生冲突的文件列表(Conflicted Files)和无冲突的文件列表(Resolved Files)如下图:

    图 4‑4 文件列表

    点击发生冲突的“19264.h”文件,GitKraken将会进入Diff View视图:

    图 4‑5文件比较视图

    程序正中央显示了总共有一个冲突发生:

    图 4‑6发生的冲突

    点击箭头按钮可以快速定位到发生冲突的地方。

    左侧的 部分显示的是 master 分支中提交记录的文件内容,在20~22行后面添加了一些注释;右侧的 部分显示的 testconflict 分支中提交记录的文件内容,

    可以看到 15行的 #define 定义下面的函数是 lcd_delay_ms 函数而不是 lcd_delay_us 函数,也就是之前提到的删除了 lcd_delay_us 函数。

    下方的Output显示的是最终将会保留的文件内容。

    3) 解决冲突

    当代码出现冲突后,需要手动解决冲突。在代码冲突的位置, 两部分各有一个复选框。若点击 侧的复选框,将会保留master分支中对该段代码的修改:

    图 4‑7 保留master分支对代码的修改

    可以看到Output中将会保留这段函数代码及添加的注释。点击右上方的 按钮将会将Output框中显示的内容保存到文件中,即冲突被解决。

    如果确定了需要保留 的所有代码,将 左边的复选框选中,将会保留master分支的所有更改:

     

    图 4‑8 保留A的所有更改

             如果只需要其中的一部分代码,可以点击 记号,取消这个标记,就像下图一样:

     

    图 4‑9 保留部分更改

    那么Output框中现实的内容就会变成这样的:

     

    图 4‑10 输出结果

    可以同时保留 中的部分修改,又保留 中的部分修改。最后解决冲突,保存文件。代码合并的工作就完成了。

             完成以上工作后,需要对代码合并进行一次新的提交:

    图 4‑11 合并分支并提交

    填写合适的Commit Message,并点击 Commit and Merge 按钮。在提交记录区将会出现一个新的提交记录。

    解决了代码冲突后,就可以继续进行代码编写了。从服务器上拉取(Pull)代码,有时也会提示代码冲突,原理与此类似,只是发生冲突的分支不同而已(一个是master分支,一个是 origin/master分支)。

    本博客由 BriFuture 原创,并在个人博客(WordPress构建) BriFuture's Blog 上发布。欢迎访问。
    欢迎遵照 CC-BY-NC-SA 协议规定转载,请在正文中标注并保留本人信息。
  • 相关阅读:
    OpenGL纹理映射总结
    研究生常用网站:
    Oracle 11g,10g数据库软件下载地址
    <转>乔布斯羡慕嫉妒恨的人:Android之父安迪·鲁宾
    VC6里面的中文名字或者注释复制乱码解决
    基于CentOs的Hadoop集群全分布式部署<转>
    centos架设FTP服务器
    centos 卸载 jdk
    ESX的 企业版许可证
    vsftpd的 553 Could not create file
  • 原文地址:https://www.cnblogs.com/brifuture/p/9052512.html
Copyright © 2011-2022 走看看