Git&GitHub学习和运用(2.分支管理和冲突解决)

5.分支管理

5.1.分支使用场景和做用

一般在项目上线后,咱们常常会同时面临生产环境出现Bug和新需求正在开发的情形,如何将这些情形同时处理而又互不影响呢?这个时候就须要使用到版本控制系统的分支管理。git

分支管理参考图:函数

 上图针对不一样时期的工做场景创建了不一样的项目分支,分别处理不一样场景下产生的问题,经过创建分支能够将工做同时分配给多我的员进行开展,工做人员各自处理不一样场景的任务,而且各自之间没有冲突,这不只在效率和稳定方面都有很好的做用。测试

 

5.2.分支实战运用

  在实际的工做中通常中大型规格的软件项目都会有一套分组管理机制,为项目不一样的场景、不一样的阶段造成独立的项目工程,促使让项目的迭代根据流畅、生产环境运行更加稳定。严格的、清晰的实施分组管理机制是管理好项目必不可缺的一项工做。编码

如下根据我的的经验,将分支划分为以下的种类:spa

主干分支master设计

  生产环境的源代码,代码功能的运行要和正在运行的生产环境彻底一致。开发人员一般是无权限进行编辑操做的。版本控制

 

开发分支 developblog

  至关于主干分支的副本。“开发分支 develop”并非在该分支上进行开发的,基于“开发分支”(最新的代码)并根据新需求,一般将该分支做为母体进行扩展创建一个新的分支“功能分支”。例如,接到某个新的需求要开发一个在线聊天功能,此时开发人员就须要在该分支(开发分支 develop)上拉一个新的分支用于开发在线聊天功能。开发

 

功能分支 feature原型

  通常对于周期较短的功能,咱们能够斟酌下直接在“开发分支 develop”上进行完成。可是对于冲长期的开发功能模块,一般设计、编码、测试会花上大量的时间,一般会在“开发分支 develop”上扩展出一个新的分支专门用于某个功能的开发,该分支就称为“功能分支 feature”。

 

Bug分支 hotfix

  主要用于解决生产环境下出现系统问题(Bug),该分支一般是从“主干分支master”上扩展创建新的分支。该分支须要注意的一项是,在修复完毕并测试上线后,最好将变动的内容同步合并到正在工做的其余分支,如开发分支、功能分支,以避免形成其余分支上线覆盖掉了修复的内容。

 

合并预发布分支 MergeRelease

  该分支的运用场景是,当咱们开发好新功能或者修复好一个bug时,咱们会用“主干 master”扩展创建一个新的分支,在将当前开发好新功能或者修复bug的分支与当前从主干拉的新分支进行一个代码合并,并在代码合并时或以后要排除合并的冲突问题,并在进行一次测试,测试无误后用户发布上线,上线后在将变动的内容同步合并到正在工做的其余分支,如开发分支、功能分支。

 

各个分支的工做流程图:

注:以上圆形表明每一个分支


 5.3.Git分支管理操做

5.3.1.建立分支

建立一个分支就是将某个目标分支作为一个原型将其复制成为一个新的项目工程(分支)。

建立:git <分支名称>

查看:git branch -v

操做参考图:

 

在实际的项目中建立分支通常使用:git checkout -b <分支名称>,这边表示建立分支并定位到分支

操做参考图:

 

 

5.3.2.切换分支

操做命令:git checkout <分支名称>

操做参考图:

 

5.3.3.合并分支

第一步,切换到主干:git checkout master

第二步,合并:git merge 分支名

操做参考图:

 

5.3.4.删除分支

1.切换到主干:git checkout master

2.删除:git branch -D 分支名

操做参考图:


 6.冲突

6.1.冲突的出现场景

  6.1.1.代码上传

    当多名的开发人员都对同一份代码文件的同一块区域进行了编辑,那么当非首位提交人员在进行commit后再在对GitHub进行Push时就会产生冲突:

    操做场景参考图:

 

 

  6.1.2.版本合并时

    从主干建立了一个分支并在分支中对某个代码的函数进行了编辑,另外同时主干也对同份代码的函数进行了编辑。主干对编辑的内容先进行了commit,那么当分支在对编辑内容进行commit时就会产生冲突。

    冲突参考图:

 6.2.解决冲突

  下面以上述的第二种状况来介绍如何解决冲突:

  1. 经过命令:”git diff”,找到发生冲突的文件及冲突的内容区域,如图:

  

  2.对冲突文件中的冲突内容进行编辑(手工解决冲突内容),在实际的工做中这块每每须要找到和你同时操做同块内容的同事进行协商,看如何对内容进行编辑取舍。

 

  3.对冲突的内容肯定好修改后,须要对冲突文件进行add后再commit

  操做参考图:

 注:当Merging标识消失就表示冲突已经解决。

  4.若是是代码上传是产生的冲突,那么在commit以后还须要进行一次push操做。


   后续详见第二节.....

相关文章
相关标签/搜索