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分支)。

GitKraken使用教程-基础部分(9)的更多相关文章

  1. GitKraken使用教程-基础部分(4)

    6. 打开现有的Git仓库 点击左上角 File ==> open repo ,出现如图 6‑1的界面: 图 6‑1 打开本地仓库 点击图中的  按钮就会出现一个对话框,如图 6‑2,以 G:\ ...

  2. GitKraken使用教程-基础部分(3)

    5. 克隆服务器上的项目 首先,返回主界面,点击File => Clone Repo,选择 Clone with URL,如下图: 图 5‑1 SSH方式克隆仓库界面 1) SSH 方式连接仓库 ...

  3. GitKraken使用教程-基础部分(2)

    3. 修改用户名 为了方便项目中代码的管理,需要重新编辑用户名. 点击右上角的图像即可看到如下图 3‑1所示的下拉菜单,鼠标悬于Profile上,会出现一个Edit按钮. 图 3‑1 编辑个人信息 点 ...

  4. GitKraken使用教程-基础部分(1)

    1. 首次打开程序 第一次打开GitKraken程序时, GitKraken会提示需要登陆,可以用github.com的账号登陆,或者用邮箱创建账号登陆(如图 1‑1). 图 1‑1登陆帐户界面 登陆 ...

  5. GitKraken使用教程-基础部分(8)

    9.  远程(Remote)仓库 1) 添加远程仓库 一般在本地新建仓库后,需要添加一个远程仓库用于push/pull代码.鼠标移至GitKraken左侧区域的REMOTE栏,点击 该栏右边出现的 按 ...

  6. GitKraken使用教程-基础部分(7)

    8.  本地分支和标签 1) 在提交记录区中查看分支状态 提交记录区中每一个分支都位于一个提交记录所在的行中. 从图 2‑1中可以看到,服务器上的master分支停留在整理格式(把这个提交记录记为or ...

  7. GitKraken使用教程-基础部分(5)

    7. 提交代码 1) 查看文件改动 修改了某个文件后,在程序右侧会出现已修改文件的列表(如图 1‑1),这里以Test.git 为例,修改了19264.h 的文件编码,将其改为utf8.Unstage ...

  8. GitKraken使用教程-基础部分(6)

    4) 放弃本次文件的改动 有些情况下,由于更改代码造成了编译无法通过等错误时,想要放弃这次对文件的修改,将文件还原成上一次提交后的状态,一种简单的恢复文件的方法就是,在Unstaged Files 列 ...

  9. iOS10 UI教程基础窗口的内容与设置起始窗口

    iOS10 UI教程基础窗口的内容与设置起始窗口 iOS10 UI教程基础窗口的内容与设置起始窗口,本章我们从iOS10开发中UI的基础知识开始讲解,其中包括了窗口.视图以及UI层次结构和Views的 ...

随机推荐

  1. Powershell Deploy Service Fabric Application To Local Cluster

    之前写过一篇用 Powershell 部署 Service Fabric Application 到本地集群的随笔,感觉过程有点复杂,这次将流程简化,只需要将应用程序打包,加上配置文件就可以了.   ...

  2. Winform 自定义程序安装向导(可用于数据库升级等)

    在安装包,数据库升级过程中,大部分使用的是install shield.它的功能非常强大,不过就是太臃肿了. 我们可能希望能够自定义,更加灵活一下. 界面如: 这是来自于codeproject上的一个 ...

  3. 使用metasploit进行栈溢出攻击-5

    我们先尝试使用这个脚本进行攻击: msf > use exploit/linux/myvictim msf exploit(myvictim) > set payload linux/x8 ...

  4. linux配置环境变量 - 认识

    环境 ubuntu17.04 终端(就是黑框) 认识  环境变量:$PATH 在 ×××/bin 下的命令,可以不用到指定目录下, 比如:安装hbase后,hbase提供一些shell命令在habse ...

  5. ubuntu - 14.04,解决Gnome桌面右键菜单失效问题!

    我安装完ubuntu14.04,首先安装经典版的Gnome,刚安装完经典版的Gnome,在桌面点击鼠标右键会弹出菜单,使用非常方便,但是当我安装了最新版的Gnome15.10之后,我发现再进入经典版的 ...

  6. CHImage

    1.启动图.图标 iOS应用图片尺寸制作脚本 ======= github 规格尺寸(官方) AppIcon应用图标 and Launchimage启动图标的制作 iPhone所有手机型号屏幕尺寸 2 ...

  7. ConcurrentHashMap原理详解

    参考链接:https://www.cnblogs.com/chengxiao/p/6842045.html https://www.cnblogs.com/ITtangtang/p/3948786.h ...

  8. macOS 10.12.1 + Xcode 8.1 安装cocoapods 1.1.1

    最近公司刚给配了一台27寸的iMac,5K屏幕,这酸爽~~,新电脑,免不了系统升级,环境搭建,当一切就绪之后,我就准备装cocoapods了,然而,以前所有的教程全部都变得没用了...然而网上一大堆关 ...

  9. 出现epoll failed: Bad file descriptor的原因

    今天遇到了这个问题,之前找了半天原来是IO事件的socket描述符在epoll_ctl()处理之前关闭了. if(epoll_ctl(epollFd, EPOLL_CTL_DEL, ev->fd ...

  10. [ZJOI2008]生日聚会 BZOJ1037 dp

    题目描述 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件: 对于任意连续 ...