git分支管理没有绝对标准,但也不能随意切分。应该是根据具体的项目管理,来做分支管理。
常见分支命名及用途:
feature 开发分支,用于开发,开发环境对应的分支。
develop 测试分支,用于测试人员验证,测试/UAT环境对应的分支。
master 线上分支,用于发布,它保存的是最新的线上环境代码。
release 可以是分支也可以是标签(Tag),在gitlab中,有直接对应的Release功能,可以创建一个发布日志和Tag。
hotfix 补丁分支,用于修改线上环境bug。
以标准的项目(有明确的需求、明确的发布时间)为例,git分支就比较适合按需求做切分。
从develop中创建分支 feature 和 feature-1010 (这里1010表示此次需求发布日期),需要在此次版本中发布的需求在 feature-1010 分支中开发,不确定是否能发布的需求另建分支 feature-1010x1 (这里x1表示需求代号)。
feature子分支不是越少越好,也不是越细越好,根据需求提前评估好技术难度及开发时间很重要,有时间或技术风险的需求一定要独立建个feature子分支。
当一个需求开发完成,本地自测通过,即可提交到feature分支发布到开发环境测试。如果公司使用的是gitlab,建议在gitlab上提交分支合并请求,项目组长或主开发审核合并。gitlab的分支合并会生成一份文件变更记录,这份记录清晰明了,有了它也就告别了在commit中找记录的日子。
所有在开发环境测试通过的需求,申请合并到develop分支发布到测试/UAT环境做最终测试验证。全部验证通过,将develop分支合并到master分支,发布上线。打tag:release-20201010 (这里20201010表示发布日期/版本),gitlab中建议使用Release功能。
发布上线后,所有已发布的feature分支需要删除,只保留未发布的feature分支。等下个需求开始,重新从develop中创建feature分支。
若线上环境有bug,从master分支中切出hotfix分支,用于修复线上bug。修改完bug,将hotfix分支合并到develop分支,发布到测试/UAT环境测试验证。测试通过,将hotfix合并到master,发布上线。线上环境测试没问题,打release tag,删除hotfix分支。
以上的经验仅供参考,按需提取所需。每个项目情况都不一样,有很多项目是按人来做分支管理,也有按模块等等来做分支。磨合寻找适合自己项目和团队的方式,规范分支合并,避免或减少分支合并带来的破坏。
git命令参考:
所有变更添加到暂存区:
git add -A
将暂存区提交到本地仓库:
git commit -m 提交信息
将本地分支推送到远程服务器分支:
git push origin 分支名称
查看本地及所有分支(非远程最新分支信息):
git branch -a
获取更新远程分支信息:
git fetchgit fetch origin 分支名称
切换到本地其他分支:
git checkout 分支名称
创建并切换到本地分支 feature-1010,来源自远程分支 feature-1010:
git checkout -b feature-1010 origin/feature-1010
删除本地分支:
git branch -D 分支名称