大家好,今天给各位分享Git分支设计规范的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
在讲Git分支规范之前,我们先来说一下系统开发过程中常用的环境。
DEV环境:用于开发者调试。 FAT环境:功能验收测试环境,用于软件测试人员在测试环境中进行测试。 UAT环境:用户验收测试环境,用于软件测试人员在生产环境中进行测试。 PRO环境:是生产环境。例如项目域名为:http://www.abc.com,则相关环境的域名可配置如下:
DEV环境:本地配置虚拟域名到FAT环境:http://fat.abc.comUAT环境:http://uat.abc.comPRO环境:http://www.abc.com 接下来,针对不同环境设计分支。
分支
主分支
master是主分支,用于部署到正式环境(PRO)。一般由release或hotfix分支合并。在任何情况下都不允许直接修改master分支上的代码。
发布分支
Release是预发布分支,用于部署到预发布环境(UAT)。它始终与master分支保持一致,一般由develop或hotfix分支合并。不建议直接在release分支上修改代码。
如果release分支测试出现问题,需要回去验证develop分支,看是否存在这个问题。
修补程序分支
hotfix是紧急修复分支,命名规则以hotfix-开头。
当线上出现紧急问题,需要立即修复时,需要在release或master分支的基础上创建hotfix分支。修复完成后,合并到release或develop分支。一旦修复上线,就会被删除。
开发分支
开发是一个测试分支,用于部署到测试环境(FAT),始终保留最新完成和修复错误的代码。可以根据需求的大小来决定是与feature分支合并还是直接在其上开发。
只有符合测试的代码才能在上面合并或者提交。
特征分支
feature为需求开发分支,命名规则以feature-开头。一旦需求上线,它将被删除。
这可能有点难以理解,所以这里举几个开发场景。
开发场景
添加新要求
订单管理有一个新的要求需要开发。首先,必须创建一个特征顺序分支。那么问题来了,这个分支是基于哪个分支呢?
如果有未测试的需求,则会在master的基础上创建。
如果没有未测试的需求,将根据开发创建它们。
这些要求已在功能顺序分支中开发。准备提交测试时,首先要确保develop没有未经测试的需求。只有这样开发人员才能将代码合并到develop(测试环境)中供测试人员测试。测试人员在develop(测试环境)测试通过后,开发人员将代码发布到release(预发布环境)供测试人员测试。测试人员在release(预上线环境)测试通过后,开发人员将代码发布到master(正式环境)供测试人员测试。测试人员通过master(正式环境)测试后,开发人员需要删除feature-order分支。正常迭代
订单管理有迭代需求。如果开发时间为1d,则直接在develop中开发。如果开发时间是1d,那么就需要创建一个分支,并在分支上进行开发。
测试和上线的开发后流程与添加新需求的流程一致。
修复测试环境bug
如果在develop测试中出现bug,如果需要2小时才能修复,则直接在develop中修复。如果需要2小时才能修复,则需要在分支上修复。
修复后的测试升级上线流程与新增需求流程一致。
修改预启动环境bug
如果发布测试出现bug,首先要检查develop分支是否也存在同样的问题。
如果存在,修复流程与测试环境bug修复流程相同。
如果不存在,这种可能性就比较少。大部分是数据兼容性问题、环境配置问题等。
修改官方环境bug
如果master测试出现bug,首先要检查release和develop分支是否也有这个问题。
如果存在,修复流程与测试环境bug修复流程相同。
如果不存在的话,可能性就比较小。大部分是数据兼容性问题、环境配置问题等。
紧急修复正式环境错误
需求在测试过程中没有发现错误。上线运行一段时间后出现Bug,急需修复。
我个人理解紧急修复意味着没有时间验证测试环境,但还是建议验证上线前的环境。
如果release分支有未经测试的需求,则基于master创建hotfix-xxx分支。修复完成后,发布给master进行验证。验证通过后,将master代码合并到release和develop分支,并删除hotfix-xxx分支。如果release分支没有未测试的需求,但develop分支有未测试的需求,则基于release创建hotfix-xxx分支。修复完成后,发布到release进行验证。后续流程与线上流程一致。验证完成后,将master代码合并到develop分支,删除hotfix-xxx分支。如果release和develop分支都存在未经测试的需求,则直接在develop分支上完成修复,然后发布到release进行验证。后续流程与线上流程相同。并行测试
两个需求在一个项目中并行开发并并行测试,但发布日期不同。
我能想到的两个选择:
然后部署一组可供测试人员测试的分支,并使用gitcherry-pick 来“挑选”提交。对于并行测试,您有好的解决方案吗?欢迎留言。
Commit 日志规范
请务必仔细填写提交的信息!
建议参考规范:类型(范围):主题
例如:fix(首页模块):修复弹出的JS Bug。
type表示动作类型,可分为:
fix: 修复xxx Bugfeat: 添加xxx 功能test: 调试xxx 功能style: 更改xxx 代码格式或注释docs: 更改xxx 文档refactor: 重构xxx 功能或方法scope 表示影响范围,可分为:模块、类库、方法等
主题是指简短的描述,最好不超过60个字。如果有相关bug的Jira编号,建议在描述中添加。
小结
暂时能想到的就这些了。标准不是一成不变的,仅供参考。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/202878.html
用户评论
小清晰的声音
终于看到一个关于 Git 分支设计的规范文档了!之前公司项目分支简直混乱不堪,这篇文章太棒了,以后我们的开发周期应该能更高效一些
有20位网友表示赞同!
敬情
学习啦学习,以前就觉得Git分支有点懵,没啥标准。现在有了规范,我估计可以提高工作效率多了。
有17位网友表示赞同!
陌上蔷薇
文档写的很清晰可读,每个分支的功能描述都很到位。就是不知道各个公司具体情况会不会完全适用这个规范 希望多提供一些案例分析
有16位网友表示赞同!
杰克
说实话,个人更偏好自由的开发流程,觉得强加一个分支规范反而减少了灵活性。不过这份文档还是很有参考价值的,可以借鉴一些思路
有5位网友表示赞同!
挽手余生ら
以前总是乱分分支,搞得自己一头雾水,现在看着这份规范我觉得我的思路很粗糙。感谢分享!
有8位网友表示赞同!
减肥伤身#
对于大型项目来说,分支设计确实很重要,避免了代码混乱的问题。这篇文档非常系统,涵盖了各个关键环节的最佳实践。
有8位网友表示赞同!
冷青裳
我公司一直没有明确的分支规范,导致开发过程中经常出现冲突和延期问题。这篇文章让我豁然开朗,一定要将这份规范分享给团队成员!
有9位网友表示赞同!
早不爱了
作为项目经理,一个良好的 Git 分支规范能够有效提升团队协作效率。不过,不同的项目类型可能需要定制分支设计方案,需要根据实际情况灵活调整。
有18位网友表示赞同!
来瓶年的冰泉
我总觉得,Git 分支设计太过琐碎,反而增加了开发过程的复杂度。希望未来能够出现一些更简单高效的解决方案。
有5位网友表示赞同!
◆残留德花瓣
很认同文档中提到的 "Keep it simple" 的原则,分支设计越简单越好,避免过度复杂化导致开发效率低下。
有9位网友表示赞同!
肆忌
这份规范写的太理论了!希望作者能提供一些实际案例和代码示例,更容易理解和应用。
有13位网友表示赞同!
笑叹★尘世美
虽然这个规范很详细,但毕竟只能作为参考,每家公司项目的具体情况也不一样,还是需要根据实际需求进行调整
有10位网友表示赞同!
把孤独喂饱
我之前用过其他开发工具,感觉它们的版本控制机制比 Git 要简单得多,为什么大家都这么喜欢使用 Git 呢?
有6位网友表示赞同!
开心的笨小孩
文档中提到的 "hotfix" 和 "release" 分支的使用场景很明确,对于快速修复bug和发布新版软件非常有帮助。
有10位网友表示赞同!
该用户已上天
在实际开发过程中,遇到一些特殊情况分支设计可能没办法完全满足规范要求,需要灵活处理这些细节
有8位网友表示赞同!
爱到伤肺i
个人感觉这篇文章对 Git 分支设计的新手很有帮助,可以快速掌握基本的知识和方法。但是对于经验丰富的开发者来说,可能会显得过于基础了。
有9位网友表示赞同!
你身上有刺,别扎我
希望以后能加入更多工具的使用建议,比如如何使用 Sourcetree, GitHub 等工具来操作 Git 分支
有9位网友表示赞同!
我没有爱人i
这篇文档让我对 Git 分支设计有了更系统的认识,将来在项目开发中可以更好地应用这些规范提高效率!
有20位网友表示赞同!