0x00 前言
在开发团队的日常工作中,代码的版本控制是很重要的一环,目前大多数的项目,都使用 Git 作为版本控制的工具,Git 相比于其他版本控制工具,具有很多优点:
1、分布式的版本控制系统,每个本地仓库都包含完整的远程仓库文件。
2、优秀的分支管理,基于快照的文件管理机制使得分支的创建、合并、销毁等操作都变得非常轻量。
3、速度飞快,近乎所有对文件的操作都在本地执行。
下面我们就来探讨以下如何正确使用这款优秀的版本管理工具。
0x01 分支命名
分支名称能帮助我们快速了解分支的内容,最佳实践分支及其命名规则说明如下:
主分支:master(认为有歧义可遵循 Github,改为 main ,下面涉及主分支的均以 master 进行说明)
开发分支:develop
功能分支:feature-{功能名称},如 feature-upload-file
预发布分支:release-{版本号},如 release-1.1.0
普通修复分支:fix-{修复名称},如 fix-file-path
紧急修复分支:hotfix-{修复名称},如 hotfix-cache
0x02 分支管理
0x0200 分支管理流程说明
分支管理整体流程如下:
(图片来源网络,若侵犯您的权益可请联系删除)
这里简单对上图的流程做介绍:
1、项目 Git 仓库初始化之后,我们会得到一个主分支(master),项目文件初始化之后在主分支上提交,并打上初始版本号。此分支将用作后续生产环境的部署分支。
2、从初始版本上拉出开发分支(develop),此分支将用作开发环境的部署分支。
3、项目按最小发布版本拆分出当前版本需要实现的功能点,每个功能点的开发者从开发分支中拉出功能开发分支(feature)进行开发。
4、功能开发完成后将功能分支(feature)合并到开发分支(develop)。
5、小版本的功能都开发完成并在测试环境验证通过之后,从开发分支(develop)拉出当前小版本的预发布分支(release)。
6、预发布过程中需要修复 bug,可直接在预发布分支(release)上修改提交。
7、预发布验收完成后,将预发布分支(release)合并到开发分支(develop)和主分支(master)。
8、在主分支(master)上打上版本号标签并最终发布到生产环境。
9、功能开发过程中,生产环境出现问题需要紧急修复,则从主分支(master)拉出紧急修复分支(hotfix),修复好后将紧急修复分支合并到开发分支(develop)和主分支(master),其他分支是否合并可视情况而定。
上面仅粗略说明了产品版本的发布流程,下面将对各个分支的功能及注意事项做说明。
0x0201 各分支功能及注意事项
0x020100 主分支(master)
主分支作为产品最终的发布分支,将应用到生产环境的部署当中,除了项目初始化之外,我们不应该在主分支上做任何的 commit,主分支的提交只能从 release 分支或者 hotfix 分支上合并(merge)。需要注意的是主分支(master)上的每次合并,都要打上版本号,便于做版本管理。
0x020101 开发分支(develop)
开发分支通常用作为开发环境的部署分支,该分支与主分支类似,我们也不应该在开发分支上直接做 commit,开发分支的内容可以从功能分支、预发布分支、普通修复分支和紧急修复分支上合并过来。需要注意的是每次预发布分支(release)拉出来后,开发分支上之后的 commit 就都属于下一次预发布的内容了。
0x020102 功能分支(feature)
功能分支作为最小功能点的开发分支,由对应的功能开发者创建,功能开发过程的更改均提交到对应功能分支,功能开发完成后,经过自测验证没问题后,则可合并到开发分支(develop),在测试环境中验证。需要注意的是,合并到开发分支前要先确认当前功能是否是在当前预发布版本(release)中发布,如果不是则不可合并,需等到功能可预发布了才能合。功能分支一般在开发分支合并完毕后即可删除(本地和远程都删),减少分支复杂性。
0x020103 预发布分支(release)
预发布分支通常作为于预发布环境的部署分支,在预发布版本的功能都开发完成且合并到开发分支上后,从开发分支拉出预发布分支,每个预发布分支都有预发布版本号,在预发布环境验证过程中出现的 bug 可直接在对应的预发布分支上直接修复及提交(可多次修复多次提交),预发布版本验证通过后,将当前版本的预发布分支合并到主分支上进行发布,同时还要合并到开发分支(如果有 bug 的话,没 bug 不用合,歪嘴笑.jpg),预发布分支一般保留几个最近的版本,其他都可以删掉,本地远程都可以删。
0x020104 普通修复分支(fix)
普通修复分支一般是用于修复未发布的功能的,在功能开发过程中,功能分支合并完后删掉了,此时对应功能出现 bug,但是又没有到预发布时间,则可从开发分支拉出普通修复分支,进行功能的修复及提交,之后再合并到开发分支,一般也是用完之后直接删除,本地远程都删(一般也不会推到远程)。
0x020105 紧急修复分支(hotfix)
紧急修复分支一般用于修复生产环境出现的 bug,生产环境出现问题,需要紧急修复,可以从主分支拉出紧急修复分支进行修复,修复完毕可发布到开发环境或预发布环境进行验证,验证完毕后最终发布到生产环境。紧急修复分支也是用完之后直接删除,本地远程都删(一般也不会推到远程)
0x03 提交信息(Commit Message)
0x0300 提交信息编写建议
整体建议:用一行文字简单描述本次提交的内容,如果一行放不下,需要详细说明,可以回车空一行,再详细列举说明。下面给出一些模板。
0x030000 新增功能
feat: 新增xxx功能
- 功能简单描述
- 功能简单描述
0x030001 功能修复
fix: 修复xxx
- 修复简单描述
- 修复简单描述
0x030002 代码或其他调整
opt: 调整xxx
- 调整简单描述
- 调整简单描述
0x030003 文档相关调整
doc:调整xxx文档
- 调整文档简单描述
- 调整文档简单描述
0x04 总结
Git 作为版本控制工具在开发团队的协调与合作中起着关键的作用,规范 Git 的使用能让我们协作得更加高效,希望本文能对你有所帮助,感谢你能看到最后,谢谢。