1.说明
在开发过程中,我们经常会碰到这样的问题,我们使用GIT做开发,如果有个新的功能开发,我开发到一半的时候,这时需要发布版本,这个时候就发布版本就非常麻烦。
如果使用主干,分支的模式,这个问题就比较好解决了。我们可以在分支上做开发,使用主干发布,当分支完成开发完成后,我们可以清理分支。
在开发过程中,为了规范开发,我们统一使用分支主干的开发模式,也有些情况,比如我修改一行代码的这种情况,也可以不用创建一个新的分支。
2.分支开发规范
2.1 分支规范
有三个分支,develop、test、master三个分支;
- develop为开发分支,日常在这个分支下开发功能,
- test分支为功能测试分支,面向测试同事。
- master分支为生产环境的代码,面向用户;
在接到新功能之后,大家会在 develop 分支下共同开发,觉得没问题之后,会通过git merge将 develop 代码合并到 test 分支中,然后发布到测试服务器,当测试通过后,会再次将 test 分支的代码合并到 master 分支中去。当需要发版时,由测试将主版本打上TAG,TAG是不允许修改的。
这里有个问题,合并 develop 这个到test 分支的动作必须由测试人员处理,开发人员只管在develop 上进行开发,不能进行合并,原因是如果开发一直合并,那么test分支就不会稳定。
2.2 临时任务流程:解决中途需要修复BUG
有时候项目规划了一个大版本,开发周期需要 2 个月,当我们开发到一半时候,产品经理突然说要搞个活动页面,需要在中间插入一个小版本,需要一周后上线,这个时候我们的开发分支就比较被动。
如果此时直接在当前开发分支基础上,开发活动页面的任务,将来上线会遇到麻烦,因为大的迭代版本还未开发完。而如果直接在test分支上开发任务不经过develop分支,将来等我们develop分支的大版本迭代开发完成时候,会在test分支合并develop分支代码,可能遇到代码冲突问题,因为两个分支都有新版本,Git 不知道以哪个版本为主。
解决方案,我们可以先从develop分支切换到test分支中去,然后从test分支基础上中新建一个tmp临时开发分支,在tmp分支中开发功能。
当开发完成之后再切回test分支,使用git rebase命令将tmp分支的提交记录复制到test分支中去,这样就可以交给测试人员测试后发布新版本了。不过为了避免将来develop分支的版本开发完成后,与test分支合并产生代码冲突问题,我们还需要切换到develop分支中,同样使用git rebase命令将tmp分支上提交的版本复制过来,这样就保障了临时任务可以提前单独发布到线上去,将来还不会产生代码冲突问题。
3 . 实现合并的步骤
3.1 创建一个新的git仓库
3.2 将本地仓库推到远端仓库
在该目录下执行。
git init
git add --all
git commit -m "Initial Commit"
git remote add origin http://zhangyongguo@dev.aps360.cn:7990/scm/gitdemo/demo.git
git push -u origin master
3.3 创建一个新的分支
并切换到新的分支。
3.4 推送分支到服务器端
4.分支代码合并
4.1 在主干添加文件并提交
4.2 切换到分支并修改
合并主干代码。
在分支增加一行代码。
4.3 切换到主干合并分支修改
可以看到分支的代码被合并到主干了,这个演示,我们并没有使用 pull request,操作更简单。