上一篇git相关文章主要声明了对于git的使用以及踩坑记录。传送门:


本篇主要讲解了 Git分支在公司中的实际使用策略

Git 分支管理策略图

master分支和develop分支,这两个分支至关重要,它会贯彻整个流程始终,绝对不会被删除。

master分支

master分支保持着软件可以正常运行的状态。由于要维护这一状态,所以绝对不允许开发者直接对master分支的代码进行修改和提交

其他分支的开发工作进展到可以发布的程度之后,将会有master分支进行合并,并且这一合并只在即将上线时进行。发布时,说明文档要带上哪一次的commit 编号。

develop分支

develop分支是测试分支。与master分支一样,这个分支也不允许开发者直接进行修改和提交。开发结束需要提测的时候,开发人员把自己的feature特征分支合并到develop,部署等待QA测试。

测试人员要以develop分支为测试分支,开发人员在feature分支中进行代码的修正,修改后合并到develop分支给QA再次验收。
注意:之前出现过测试时候出bug然后直接在该测试环境上修改,同时开发上还有一些新增的代码。导致再次提交时两边版本冲突。)

feature分支

feature分支以master分支为起点,是开发人员直接更改代码发送提交的分支,在feature分支中进行新功能的开发或者代码的修正。

release分支

release分支,下一个发布分支,是develop到master的过渡分支,区别于master是随时可以上线,经过多轮QA、code Review后的代码,release是准备发布的代码,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。
(记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)

hotfix

当我们线上发现新的bug的时候,我们需要创建一个Hotfix,基于Master分支创建,完成Hotfix后,我们合并回master和develop分支。

开发流程

  • 第一步,从master分支创建feature分支,注意创建feature分支前,记得一定要先执行git pull,保证master分支处于最新状态。
  • 第二步,从feature分支中实现目标功能,feature分支命名必须前面带feature/xxx,xxx最为自己姓名的简拼和迭代的开始时间,例如:feature/zqp20200422,特殊功能性的可以以具体功能命名,例如:feature/add-user 新增用户的相关功能
    当前系统中使用的是:feature_20_1230这种(其实有点不符合规范了)
  • 第三步,功能开发完毕,待需要提交测试的时候,合并到develop分支
  • 第四步,QA测试有bug,继续在feature分支上面修改bug,修改完毕再合并到develop分支,继续提测
  • 第五步,QA验证没问题,创建release分支,开发人员根据具体上线计划,请求将各自的功能特征分支代码合并到release分支,等待上线。release以每次迭代的时间点来命名,例如:release/2020_w15-16 2020年第15-16周迭代
  • 第六步,准备上线,将release分支代码合并到master
  • 第七步,上线成功,将当前master最新commit打上tag,tag名称与release名称一样
  • 第八步,删除feature分支,删除release分支,切记,很多研发都忘记上线后去删除自己的创建的分支

注意事项

  • 1、feature分支如果存在开发过程中多个commit的,合并分支的时候,需要合并一下commit,可以用 git merge --squash some-feature 或者git rebase some-feature
  • 2、养成一个好习惯:在执行git commit前,执行git diff HEAD命令,查看本次提交和上次提交的差别,确认后再提交
  • 3、如提交了不想提交的文件,可以通过 git rm -r --cached filename 去掉已经托管的文件 然后继续就行
  • 4、如何合并分支后,push之前,show log 看一下 commit记录,最近的commit 是 Merge branch 'feature/zqp20200422' into develop' ,可以通过 git commit --amend 修改合并的内容,再执行push,确保分支简洁。
  • 5、主线(master/develop)的修改合到你的特征分支上,做一次集成,这种情况建议使用git rebase比较好。
  • 6、保证develop分支的代码覆盖全部的master代码,即develop > master,hotfix分支和release分支有改代码,务必要同步合并到develop
Last modification:March 2nd, 2021 at 04:28 pm
喵ฅฅ