在 8.Git分支-分支的创建与合并-01 主要通过一个例子介绍了分支的新建,以及在工作中,git分支的新建切换以及使用,这里主要介绍分支的合并。这里的例子和8.Git分支-分支的创建与合并-01 的例子是连在一起的。

1.分支合并(没有冲突)

  分支合并主要使用:git merge <branch-name>

  接上一篇的例子:

  1.现在你关于defect #53的开发也已经完成了,现在branch的情况如下图所示。

  2.你只需要运行下面两条命令,就能够将你在iss53上面的代码合并到master分支上了。

   git checkout master

   git merge iss53  

  合并之后的分支情况如下图所示。在执行git merge命令的时候,Git会将master分支和iss53分支所指的快照(C4,C5)以及它们的公共祖先(C2)做一个简单的三方合并。Git会自行选择最优的祖先作为合并的基础,这是与更加古老的CVS以及SVN(1.5版本以下)的一个很大的区别,这些系统中需要用户自己指定最佳的合并基础。

  同样在合并完成之后,可以使用 git branch -d iss53 删除分支。

2.有冲突时候的合并

  合并分支有时候没有这么的顺利,有时候会存在冲突。

  冲突产生的情况:在两个不同的分支中,对同一个文件的同一个部分进行了修改,就会产生冲突。

  例如:上述例子中,如果你在hotfix和iss53分支中都对index.html的同一处位置进行了修改,那么在合并iss53到master分支的时候就会产生冲突,这时候你需要手动的去解决冲突,然后将index.html标记为冲突已解决,最后进行提交。

  出现冲突的文件会出现一些如下图所示的标记:

  其中在 ======= 的上半部分是HEAD所指向的master分支的内容,在 ======= 的下半部分是iss53分支的内容。你需要自己手动去选择保留 ======= 的上半部分或者下半部分,或者都保留。同时你也需要删除<<<<<<< HEAD:index.html       =======        >>>>>>> iss53:index.html 这些特殊标记。

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

  当你自己手动解决了所有的冲突之后,你需要运行 git add <filename> 来将每一个存在冲突的文件标记为冲突已解决的状态,并且暂存这些文件。通常你还需要运行 git status 来确认所有的冲突是否都已经解决了。

  最后你可以运行 git commit 来完成合并提交。在提交信息中,通常比较专业的做法是提供详细的信息来描述你是怎么解决这次冲突的,你的理由是什么。好像有个模板可以套用,用的时候可以自行百度。

9.Git分支-分支的创建与合并-02的更多相关文章

  1. git分支管理之创建与合并分支

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  2. GIT 分支管理:创建与合并分支、解决合并冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  3. Git 基础教程 之 创建与合并分支

  4. 创建与合并分支-git入门教程

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  5. git创建与合并分支

    创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来 ...

  6. [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)

    每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支.HEAD 严格来说不是指向提交,而是指向 mas ...

  7. git 学习笔记 --创建与合并分支

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  8. Git创建与合并分支,撤销修改

    git回滚到指定版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard <commit ID号> git push -f git回滚到上一个版本并推送到远 ...

  9. Git----分支管理之创建与合并分支02

    在版本回退里,你已经知道 ,每次提交,Git都把它们串i成一条时间线,这条时间线就是一个分支,截至到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支,HEAD严格来说不是指向提交 ...

随机推荐

  1. thinkphp5简单使用redis缓存

    <?php namespace app\index\controller; use think\Controller; use think\Cache\Driver\Redis; class I ...

  2. flink连接hbase方法及遇到的问题

    1.继承 RichSinkFunction 类 mvn配置: <dependency> <groupId>org.apache.flink</groupId> &l ...

  3. 初学笔记之:Java_Script的for循环事件绑定

    看JS,一直纠结于for循环事件绑定,我一直不理解,想找到一些解释,以下是个人研究一个下午后的一些见解,有不对的还望大神们指正,轻喷.在这里谢过啦. 首先,目的是做一个滑动切换图片的效果,上JS代码: ...

  4. HBase数据库增删改查常用命令操作

    最近测试用到了Hbase数据库,新建一个学生表,对表进行增删改查操作,把常用命令贴出来分享给大家~ 官方API:https://hbase.apache.org/book.html#quickstar ...

  5. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  6. <玩转Django2.0>读书笔记:邮件和分页

    1. 发送邮件 # settings.py设置 # 邮箱设置 EMAIL_USE_SSL = True # 邮件服务器 EMAIL_HOST = 'smtp.qq.com' # 邮件服务端口 EMAI ...

  7. Akka.net 性能测试兼使用小技巧

    最近想研究一下分布式开发,先拿了akka.net 跑一下性能 参考自己写个网络实现,一般在本机通讯,300M每秒的传输率,作为参考 嗯,先说结果,用Akka.net直接发bytearray,最后也只有 ...

  8. SDN网络虚拟化中有效协调的映射算法

    来自论文An efficient and coordinated mapping algorithm in virtualized SDN networks,来自期刊<信息与电子工程前沿> ...

  9. 我理解的websocket

    短轮询:客户端发起请求,服务器无论有无消息都返回信息,结束http连接.然后继续发起请求. 长轮询:客户端发起请求,建立连接,直到服务端返回消息response,结束http连接.然后继续发起请求,重 ...

  10. 解决微信浏览器中无法一键拨号问题tel

    公众号中需要在某些页面显示手机号码,并且需要点击后拨号. 原以为 <a href="tel:10086">10086</a> 可以解决了, 没想到在微信浏览 ...