GitHub学习记录7-提交规范
GitHub学习记录7
Git提交规范
在团队开发中,提交要遵循相应的规范。
一个commit包含如下几个信息:
- commit message - 提交的内容相关描述
- author & committer - 作者及提交者
- changed files - 修改的文件
- hash & parent - 提交内容的hash及在提交树上的位置
Commit Message
提交消息描述的是当前提交的功能相关信息,一般可以包括header,body,footer,
1 | <header> |
其中header是必须的。Angular官方建议的格式如下:
1 | <type>(<scope>): <short summary> |
<header>中,<type>与<summary>是必须的,<scope>可以选填。建议<header>需要保持在50个字符之内。
<type>表明本次提交的类型,一般有如下几种:build: 涉及构建相关的改动ci: 持续集成相关的改动docs: 文档feat: 新功能fix: bug修复perf: 性能相关改动refactor: 重构相关(非bug、非新功能)test: 测试相关,包括新增测试或者更改已有测试
<scope>表示改动影响的范围。在Angular中,某个提交可能涉及的范围有表单处理、动画处理等。 在实际工作中可以视项目而定。<summary>则是对本次提交的简要描述,使用祈使句、现在时。如使用change而不是changed或changes。<body>是提交信息的更为详细的描述,与<header>一样也是用祈使句、现在时。<body>描述本次 修改的动机,比如为什么引入本次改动,之前的逻辑是什么,现在的逻辑是什么,本次改动有哪些影响,等等。- 最后,
<footer>是可选项,一般涉及破坏性改动、功能的弃用等说明,以及对GitHub issue或Jira ticket的引用,PR的引用等。
自动化校验commit message
有了提交信息的规范,如何确保开发者对规范进行遵守呢?我们可以使用Git提供的Git Hooks功能对提交 的信息进行校验。
在新初始化的git项目内,我们可以在.git/hooks文件夹中找到官方提供的样例:
1 | ls -l .git/hooks |
涉及提交相关的是下面四个:
pre-commit- 在Git生成commit对象前执行prepare-commit-msg在pre-commit后执行,用以生成默认的提交信息,脚本接收三个参数:- 包含提交信息的临时文件名
- 提交的类型,如
message,template,merge,squash - 相关提交的SHA1,仅在有
-c,-C或--amend参数时提供该参数
commit-msg- 在开发者编写提交信息后执行,仅有临时文件名一个参数post-commit- 在commit-msg后立马执行,更多做通知用
Author & Committer
Git中,Author表示原始纂写该提交的作者,Committer表示应用该提交的人,如合并Pull Request 的项目管理员。如果是个人开发者或只使用单个Git平台服务(如GitHub、BitBucket等),我们一般 不需要对作者进行特别的配置。但如果使用多个Git平台或者有公司内部要求,我们可能需要针对不同的仓库 设置不同的用户及邮箱,比如全局可以设置个人的GitHub账号,企业内部仓库设置企业邮箱等。
1 | # 全局默认配置 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!






