基本使用TortoiseGit 操作本地仓库(分支)
分支的概念
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间互不影响。
为何要使用分支
先看单线程开发
思考如下现象
10月1日 业务部门提出需求 : 今年元旦3天做2个促销活动。
- 12月31 号上线活动1
- 1月4号上线活动2 ,同时要求撤销活动1
你所在部门领导为了保证能顺利完成,要求 11月15号完成上述连个功能的开发工作。
此时作为开发人员:我要面临两个文件,活动1 的代码,即要存在(12月31 要用)又要不存在(1月4 号要求删除),我们怎么做?
显然比较棘手,如果使用分支(可以理解为将代码复制一份)将很好解决。
创建分支
到现在为止,我们一直使用的时主分支(master)。
在主分支上操作创建分支
分支的查看切换
查看分支
查看版本分支图,此时我们看到有两个分支。
当然,我们可以创建多个分支。
可以看到多个分支的图形
切换分支
右键--> 检出
分支的合并与删除
合并
我们将代码切换到分支1,然后写属于需求1 的代码并提交。
当我们把需求1 开发完毕如何把需求1 的代码合并到主分支呢?
- 切换到 主版本
- 右键 合并即可将需求1 写的代码合并至主分支
此时我们看到代码自动合并到了master分支。
删除分支
冲突的处理
冲突的概念
现象演示
开发人员A 开发需求1,开发了一个工具类 MathUtil,里面第一行写了一个方法 add(int [] args)。
同时开发人员B 开发需求2,开发了一个工具类 MathUtil,里面第一行写了一个方法 add(int a int b)。
他们在互相不知道对方需求的情况下同时提交了代码到自己的分支。
思考此时如果我们把需求1 和需求2 同时都合并到主分支上,主分支的 工具类 MathUtil 的第一行应该使用谁的代码?
此时主分支是不能智能判断第一行使用谁的代码,合并时会报错,我们叫做冲突。
如何处理冲突
分析一下冲突的原因:
开发人员之间彼此没有沟通导致的同一个时间节点修改了同一个地方的代码,合并是冲突。
思考:
我们能直接把某个开发人员开发的代码删除吗?
显然不能
所以在处理冲突时,第一步应该时找开发另一个需求的人员沟通,之后才是处理冲突。
- 选中冲突的文件(带黄色感叹号的文件都是冲突的文件,如果有多个需要逐一处理)
- 右键--> 编辑冲突
- 处理完毕后,标记已解决
tag 标签
标签的概念
如果你的项目达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以给它打上标签(tag)。
比如说,我们想为我们的项目发布一个"1.0"版本。我们给最新一次提交打上(HEAD)"v1.0"的标签。
标签可以理解为项目里程碑的一个标记,一旦打上了这个标记则,表示当前的代码将不允许提交。
标签的创建(tag)
标签的创建和分支的创建操作几乎一样。