9.Git分支-分支的创建与合并-02
在 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的更多相关文章
- git分支管理之创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- GIT 分支管理:创建与合并分支、解决合并冲突
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...
- Git 基础教程 之 创建与合并分支
- 创建与合并分支-git入门教程
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- git创建与合并分支
创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来 ...
- [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)
每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支.HEAD 严格来说不是指向提交,而是指向 mas ...
- git 学习笔记 --创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- Git创建与合并分支,撤销修改
git回滚到指定版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard <commit ID号> git push -f git回滚到上一个版本并推送到远 ...
- Git----分支管理之创建与合并分支02
在版本回退里,你已经知道 ,每次提交,Git都把它们串i成一条时间线,这条时间线就是一个分支,截至到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支,HEAD严格来说不是指向提交 ...
随机推荐
- python tesserocr ImportError: dll loading failed 一个不常遇见的错误,以及简单的python安装方法~
废话不多说了,这是写给小白的了. 本人有c#,c/c++开发经验,最近因为偶然的原因,开始接触python,遇到一个棘手的问题,一位朋友在安装tesserocr 包后遇到一个错误,重新安装数次不能解决 ...
- JS实现快速排序,冒泡排序
JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b, ...
- linux 安装mysql5.7版本
首先准备好mysql5.7.17的安装包,安装包放在 /data/software 目录下 进入到 /usr/local 目录下,解压mysql安装包 命令: cd /usr/local tar ...
- Zathura: 轻巧好用的 PDF 查看器]
[Zathura: 轻巧好用的 PDF 查看器](https://linuxtoy.org/archives/zathura.html) 这个文件很轻巧,且支持VIM方式的 快捷键
- 如何修改SnipeIT的部分设置
作为一款开源的资产管理系统,Snipe-IT非常的好用又结实,但是原始设置对中国用户有些不方便,部分汉化没有完成,需要直接修改代码,下面把常用的修改记录如下: 1.修改资产打印标签中的文本名称 找到 ...
- Windows 2003 防火墙开启后无法访问FTP解决办法
最近遇到一个比较郁闷的问题,服务器开启防火墙后电脑就无法访问服务器的防火墙,但是防火墙又不能关,在例外中添加端口21也不管用. 后来在网上终于找到了一个解决方案,可以在不关掉防火墙的情况下访问服务器的 ...
- vue 实现图片上传与预览,以及清除图片
vue写原生的上传图片并预览以及清除图片的效果,下面是demo,其中里面有vue获取input框value值的方法以及vue中函数之间的调用 <!DOCTYPE html> <htm ...
- 上传插件webupload之调用拍照兼容问题
在项目中,移动端用到了webupload插件来实现上传功能(我觉得这个插件挺好用的,所以无论pc还是移动端我都使用了这个插件来做上传功能) 在移动端要调起拍照功能,实现上传,须得在webuploade ...
- sqlserver 评估过期
解决:重新打开安装中心->维护-->版本升级 ,重新输入序列号 即可 sqlserver2008企业级序列号:JD8Y6-HQG69-P9H84-XDTPG-34MBB
- CDN(Content Delivery Network)技术原理概要
简介 CDN(Content Delivery Network)即内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调度等功能,使用户就近获取所需内容,提高用户访问响应速度和 ...