适用于团队技术水平适中,有一定开发流程和规范的团队。
master
/ main
:主线/基线分支
hotfix
和 release
的合并请求),每次合并分支都建议生成一个新的版本号,这样可以方便追踪和回溯,可以通过 git tag
命令来标记版本号。
hotfix
:线上版本bug热修复分支
release
:预发布分支
BugFix
内容develop
:开发分支
feature
:功能分支
适用于一些技术水平比较高的团队或开源项目。
master
:主分支
团队成员们可以分主分支中分离出自己的分支进行开发和测试,然后本地分支提交代码,等到开发完成之后可以发起一个 Pull Request(拉请求/合并请求)
。团队成员们可以对代码进行 Review
评审,如果没有问题就可以将这个 PR 发布(Deploy)和合并(Merge)到主分支中。
在命名方面推荐使用带有意义的描述性名称来命名分支
定期合并已成功验证的分支,及时删除已经合并的分支
保持合适的分支数量
为分支设置合适的管理权限
公认的 git message
规范是 angular规范。
其中,header
是必须的,body
和 footer
可以省略。
不管哪一部分,任何一行都不得超过72个字符(或100个字符),这是为了避免自动换行影响美观。
Header部分只有一行,包括三个字短:type
(必需)、scope
(可选)和 subjet
(必需)。
用于说明 commit 的类别,只允许使用下面 7 个标识:
如果 type 为 feat和fix,则该commit将肯定出现在 Change log之中。
其他情况(docs、style、test、chore)由你决定,要不要放入 Change log,建议是不要。
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,试项目不同而不同。
例如在Angular,可以是 $location
, $browser
, $compile
, $rootScope
, ngHref
, ngClick
, ngView
等。
如果你的修改影响了不只一个 scope,你可以使用 * 代替。
subject是 commit 目的的简短描述,不超过50个字符
body 部分是对本次 commit 的详细描述,可以分成多行。
使用第一人称现在时,比如 change,而不是 changed 或 changes。
永远别忘了第二行是空行
应该说明代码变动的动机,以及与以前行为的对比。
Footer 部分只用于以下两种情况
如果当前代码与上一个版本不兼容,则 Footer 部分以 BREAKING CHANGE
开头,后面是对变动的描述,以及变动理由和迁移方法。
如果当前 commit 针对某个 issue,那么在 Footer 部分关闭这个 issue。
还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以 revert:
开头,后面跟着被撤销 commit 的 Header。
Body部分的格式是固定的,必需写成 This reverts commit <hash>
,其中 hash 是被撤销 commit 的 SHA 标识。
如果当前 commit 与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的 Reverts小标题下面。