Git(五)Git分支管理

上篇文章主要说到 Git的使用中冲突处理, 本篇文章接着上篇内容继续为大家介绍 Git的分支管理,Git的分支管理非常强大,基本可以解决所有的版本开发情况。

关注公众号【程序职场】,专注于 Spring Boot+微服务,小程序,flutter,Android,定期文章和视频教程分享,关注后回复   Java资料 ,领取为你精心准备的 学习 干货!

前言

一,分支作用(解决的问题)

二,Git分支架构模型

三,创建分支

四,合并分支

五,解决合并冲突

一,分支作用(解决的问题)

通过Git可以对项目的版本进行管理。

但是如果直接使用Git的软件会比较麻烦,因为是通过命令进行操作的,使用起来还是没有可视化的工具更直观,当然这个也看个人兴趣爱好。 Sourcetree则可以与Git结合,提供图形界面,使用会方便很多。

那么通过SouceTree工具是否可以打分支,进行分支管理呢?答案肯定是 可以的,而且使用起来更easy,那么分支主要解决什么问题呢?为什么不直接在 默认的分支master上直接使用呢?

1,有哪些分支,各个分支的作用

1,master分支:主分支,产品的功能全部实现后,最终在master分支对外发布。

2,develop分支:开发分支,基于master分支克隆,产品的编码工作在此分支进行。
3,release分支:测试分支,基于delevop分支克隆,产品编码工作完成后,发布到本分支测试,测试过程中发现的小bug直接在本分支进行修复,修复完成后合并到develop分支。本分支属于临时分支,目的实现后可删除分支。

4,bugfix分支:Bug修复分支,基于master分支或发布的里程碑Tag克隆,主要用于修复对外发布的分支,收到客户的Bug反馈后,在此分支进行修复,修复完毕后分别合并到develop分支和master分支。本分支属于临时分支,目的实现后可删除分支。
5,feature分支:功能特征分支,基于develop分支克隆,主要用于多人协助开发场景或探索性功能验证场景,功能开发完毕后合并到develop分支。feature分支可创建多个,属于临时分支,目的实现后可删除分支。

2,分支主要解决什么问题?应用的场景?

1,多人同时开发,需要在开发分支做调整,最后合并到主分支(放置修改主分支导致主分支异常)

2,不同的人开发不同的功能,需要打多个分支,每个分支完成后合并分支到主分支,避免在一个分支上提交出现重复的异常冲突

3,上线项目版本优化,需要打修复分支,处理修改问题

4,测试分支,用于测试版本,避免在主分支做问题修正

3,主分支直接使用的后果?

1,出现冲突异常

2,导致主分支出问题

3,多人开发在一个分支上 ,受影响

二,Git分支架构模型


此图来之网络,充分表达了各个分支的作用。

三,创建分支

我们以Github上项目为例,该项目是我在Github上创建,默认只有一个 master主分支,首先我们需要Clone克隆  master分支到本地,如下图:

我们以两个用户来验证分支的操作,用户1和用户2,用户1创建分支User1_dev 并推送服务器,用户2创建分支User2_dev 并推送到服务器。

创建的两个开发分支,用于多用户开发,需要合并对方分支 和 开发完成后合并到主分支操作。

1, 用户1创建分支 User1_dev,并推送到Github服务器

  • 创建分支

  • 推送分支到服务器

  • Github服务器查看分支

此时Gihub服务器已经有用户1创建的分支了,可以在本地查看创建的服务器是否有分支,如下图:

2, 用户2创建分支 User2_dev,并推送到Github服务器

用户2的操作和用户1是一样的唯一不一样的是 不同的人操作的,如下图:


通过上面的两个用户的操作,分别创建了dev开发分支,两个用户开发两个不同的功能模块。

四,合并分支

通过上面一小节的分支创建,我们明白了在什么情况下创建分支,并且如何创建分支(需要在哪个分支上创建,按照自己需求来创建)。

那么有些小伙伴就说了,多个人创建了多个分支以后 在基础上做开发,开发完成了,怎么合并这些分支呢?
我们就以上面两个用户创建的两个不同分支,在基础上做开发后合并为例。

1,首先用户1和用户2 拿到项目经理的需求,项目开发计划很着急,并且两个功能是无关联的,可以单独开发,这时候就需要两个人并行开发,所以两个用户创建了两个开发分支(一般都是项目负责人创建后开发人员更新分支,我们这里没有负责人,人人都是leader,哈哈哈),User1_dev和User2_dev分支

2,用户1和用户2分别在分支上做开发。

3,开发后提交到远程服务器分支上

如下图:

用户1开发后提交远程分支

用户2开发后提交远程分支


功能开发完成后,项目经理说要他们各一个版本,当然需要两个功能都有的,这时候就需要合并代码了,需要用户1合并用户2,同时 用户2也要合并用户1的。

那么怎么合并呢? 首先确保用户1和用户2已经把自己的开发 推送到远程服务器分支上。

然后将对方的分支拉取下来,每次想看的话先获取,然后再拉取最新的代码到本地仓库即可。 

那么如何拉取对方的分支呢,我们通过用户1拉取用户2的分支为例:

步骤:找到远程----》origin---》分支User2_dev---》检出origin/User2_dev

检出分支成功后,在分支中可以看到拉取的分支。
注意:左边分支中的 黑色加粗表示当前所处的分支,可以任意双击切换! 

此时作为用户1 就可以看到用户2提交的分支内容:如下图:

现在用户1和用户2都想将对方的代码合并到自己分支,这是就需要分支的合并。例如用户1合并用户2的分支: 
1,首先左边分支 切换到自己分支(用户1)

2,右键点击用户2的分支,选择  合并User2_dev到当前分支,然后在对话框中选择确认合并

此时查看 User1_dev分支就有用户2分支的开发功能了

打开本地的文件,可以看到 用户2的开发文件中信息已经有用户2 添加的新功能了

注意,注意,注意,这个时候千万不要以为已经成功了,最后不要忘了将各自合并后的分支推送。

重点:开发分支往主分支合并

现在用户1和用户2的开发任务结束了,各自的本地分支内容也推送到了远程仓库,项目经理就可以clone克隆远程仓库的项目到本地,拉取用户1和用户2的提交的最新分支,将它们合并到主分支master中。这里我们以任一方为项目经理,进行主分支的合并,合并完成并推送。 

1,克隆主分支master,拉取用户1和用户2分支

2,合并用户1分支,合并用户2分支(操作和上面用户1合并用户2一样)

操作如下:

切换master为当前分支

此时Github服务器已经是最新的全部功能

五,解决合并冲突


合并冲突时很常见的,一般出现在一个文件多个人修改,这样在合并第一个用户的代码时是正确的,但是合并第二个用户的代码时就会出现冲突异常,假设用户1和用户2 两人同时在同一个文件进行了操作,那最后合并时就会出现冲突。

比如:我们以公用文件为例,两个人同时在改文件添加了信息,推送到远程服务器

此时当用户1和用户2推送自己的分支到远程仓库后,项目经理拉取代码进行合并: 
假设首先合并用户1到master没有问题,但是当合并用户2到master时就会提示合并出现了冲突,需要解决冲突。

操作如下:


 

点击关闭,然后切换到文件状态,找到出现冲突的文件,会有相应的冲突信息: 

有冲突就要解决,右键单击冲突文件,选择解决冲突,这里有两个选项: 
1、使用 我的版本 解决冲突 
2、使用 他人版本 解决冲突 
这里项目经理首先是将用户的分支合并到主分支master上

那么“我的版本”就是对应的用户1的,“他人版本”对应的就是用户2的。如果首先合并用户2的分支,那么对应关系相反。总的来说,“我的版本”对应的是首先合并到主分支master的。 


采用一个人的版本,那么在冲突文件中就只会保留该人修改的代码,例如我这里就选择”使用 我的版本 解决冲突“,那么在公用文件中就只会保留用户1添加的代码。 

OK,本文我们就先说到这里,有问题欢迎留言讨论。下一篇我们说一下: 标签的管理。

                                                                                             -END-

                                                                                            程序职场

                                                                                   一个执着的职场程序员

发布了55 篇原创文章 · 获赞 101 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/jianpengxuexikaifa/article/details/102173667