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分支)。
GitKraken使用教程-基础部分(9)的更多相关文章
- GitKraken使用教程-基础部分(4)
6. 打开现有的Git仓库 点击左上角 File ==> open repo ,出现如图 6‑1的界面: 图 6‑1 打开本地仓库 点击图中的 按钮就会出现一个对话框,如图 6‑2,以 G:\ ...
- GitKraken使用教程-基础部分(3)
5. 克隆服务器上的项目 首先,返回主界面,点击File => Clone Repo,选择 Clone with URL,如下图: 图 5‑1 SSH方式克隆仓库界面 1) SSH 方式连接仓库 ...
- GitKraken使用教程-基础部分(2)
3. 修改用户名 为了方便项目中代码的管理,需要重新编辑用户名. 点击右上角的图像即可看到如下图 3‑1所示的下拉菜单,鼠标悬于Profile上,会出现一个Edit按钮. 图 3‑1 编辑个人信息 点 ...
- GitKraken使用教程-基础部分(1)
1. 首次打开程序 第一次打开GitKraken程序时, GitKraken会提示需要登陆,可以用github.com的账号登陆,或者用邮箱创建账号登陆(如图 1‑1). 图 1‑1登陆帐户界面 登陆 ...
- GitKraken使用教程-基础部分(8)
9. 远程(Remote)仓库 1) 添加远程仓库 一般在本地新建仓库后,需要添加一个远程仓库用于push/pull代码.鼠标移至GitKraken左侧区域的REMOTE栏,点击 该栏右边出现的 按 ...
- GitKraken使用教程-基础部分(7)
8. 本地分支和标签 1) 在提交记录区中查看分支状态 提交记录区中每一个分支都位于一个提交记录所在的行中. 从图 2‑1中可以看到,服务器上的master分支停留在整理格式(把这个提交记录记为or ...
- GitKraken使用教程-基础部分(5)
7. 提交代码 1) 查看文件改动 修改了某个文件后,在程序右侧会出现已修改文件的列表(如图 1‑1),这里以Test.git 为例,修改了19264.h 的文件编码,将其改为utf8.Unstage ...
- GitKraken使用教程-基础部分(6)
4) 放弃本次文件的改动 有些情况下,由于更改代码造成了编译无法通过等错误时,想要放弃这次对文件的修改,将文件还原成上一次提交后的状态,一种简单的恢复文件的方法就是,在Unstaged Files 列 ...
- iOS10 UI教程基础窗口的内容与设置起始窗口
iOS10 UI教程基础窗口的内容与设置起始窗口 iOS10 UI教程基础窗口的内容与设置起始窗口,本章我们从iOS10开发中UI的基础知识开始讲解,其中包括了窗口.视图以及UI层次结构和Views的 ...
随机推荐
- Data Base 常用数据库参数的前缀表示符合
可能参数化SQL语句不同,例如在Access中参数化SQL语句是在参数直接以“?”作为参数名,在SQL Server中是参数有“@”前缀,在MySQL中是参数有“?”前缀,在Oracle中参数以“:” ...
- C++后台服务如何高效实现多个定时器任务
大部分云端的后台服务,经常会使用到定时器功能来检测一些状态值的变化,且当定时器较多时,就需要设计统一的定时器管理模块来维护所有的定时器资源.然而要设计性能良好的定时器和管理模块,是需要一定的经验和技巧 ...
- c语言参考书籍
很惭愧没能把c++学的很好,毕竟离开始工作只有2年时间,对自己要求不要过高,慢慢来吧.话说知道自己的不足,以后要更加抓紧了!fighting~ 现在计划着把c语言给学习一下了,当然这次指的是深入地学习 ...
- Chrome 67 以后版本无法离线安装crx插件
原文链接:https://blog.csdn.net/wanwuguicang/article/details/80716178 升级了Chrome后无法离线安装扩展 如图: 谷歌自Chrome 67 ...
- P2446 [SDOI2010]大陆争霸
\(\color{#0066ff}{ 题目描述 }\) 幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:"Trust me, earn eternal life."克里斯军 ...
- luogu2658 GCD(莫比乌斯反演/欧拉函数)
link 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 1<=N<=10^7 (1)莫比乌斯反演法 发现就是YY的GCD,左转YY的GCD ...
- linux物理内存管理
1.为什么需要连续的物理内存: Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数个4k(在i386体系结构中)大小的页,从而分配和回收内存的基本单位便是内存页了.利用分页管理有助 ...
- HackerRank - array-partition 并查集
https://vjudge.net/contest/279745#problem/G 每次将质数的倍数放进一个集合中,那么如果最后的集合数为n的话: 方案数: 2^n -2 : #include&l ...
- 牛客寒假算法基础集训营4 F Applese 的QQ群
链接:https://ac.nowcoder.com/acm/contest/330/F来源:牛客网 Applese 有一个QQ群.在这个群中,大家互相请教问题.如 b 向 a 请教过问题,就把 a ...
- springcloud系列三 搭建服务模块
搭建服务模块为了模拟正式开发环境,只是少写了service层直接在controller里面直接引用,直接上图和代码:更为方便: 创建完成之后加入配置: pom.xml文件: <?xml vers ...