几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间互不影响.
思考如下现象
10.1 日 业务部门提出需求 : 明年 元旦3天做2个促销活动
1) 12.31 号上线活动1,
2) 1.4 号上线活动2 ,同时 要求撤销 活动1
你所在部门领导为了保证能顺利完成,要求 11.15号完成上述连个功能的开发工作
此时作为开发人员:我要面临两个文件, 活动1的代码,即要存在(12.31 要用)又要不存在(1.4号要求删除) ,我们怎么做?
显然比较棘手,如果使用分支(可以理解为将代码复制一份)将很好解决
到现在为止,我们一直使用的时主分支(master)
在主分支上操作创建分支
常用的命名分支的约定:
功能模块xxx:feature-xxx
master上紧急bug修复xxx:hotfix-xxx
某个功能模块的bug修复xxx:feature-xxx-fix
查看版本分支图,此时我们看到有两个分支
当然,我们可以创建多个分支
可以看到多个分支的图形
右键–> 检出
我们将代码切换到分支1,然后写属于需求1 的代码并提交
当我们把需求1 开发完毕如何把需求1 的代码合并到主分支呢?
1、 切换到 主版本
2、 右键 合并即可将需求1 写的代码合并至主分支
此时我们看到代码自动合并到了master分支
现象演示
开发人员A 开发需求1,开发了一个工具类 MathUtil,里面第一行写了一个方法 add(int [] args)
同时开发人员B 开发需求2,开发了一个工具类 MathUtil,里面第一行写了一个方法 add(int a int b)
他们在互相不知道对方需求的情况下同时提交了代码到自己的分支
思考此时如果我们把需求1 和需求2 同时都合并到主分支上, 主分支的 工具类 MathUtil 的第一行应该使用谁的代码?
此时主分支是不能智能判断第一行使用谁的代码,合并时会报错,我们叫做冲突.
**分析一下冲突的原因:**
开发人员之间彼此没有沟通导致的同一个时间节点修改了同一个地方的代码,合并是冲突
思考:
我们能直接把某个开发人员开发的代码删除吗?
显然不能
所以在处理冲突时,第一步应该时找开发另一个需求的人员沟通,之后才是处理冲突
**处理过程:**
1、选中冲突的文件(带黄色感叹号的文件都是冲突的文件,如果有多个需要逐一处理)
2、右键--> 编辑冲突,
2、处理完毕后.标记已解决