Go 语言项目开发实战
孔令飞
腾讯云专家工程师,前 Red Hat、联想云工程师
41030 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 61 讲
Go 语言项目开发实战
15
15
1.0x
00:00/00:00
登录|注册

05 | 规范设计(下):commit 信息风格迥异、难以阅读,如何规范?

subject
scope
type
使用工具生成 CHANGELOG 和语义化版本号
提交符合 Angular 规范的 Commit Message
常见提交操作
提交频率控制
Angular 规范
相关工具
基于 Commit Message 自动生成 CHANGELOG 和 SemVer 的工具
Commit Message 生成和检查功能
注意事项
操作步骤
git rebase -i
git commit --amend
注意事项
修改 Commit Message
操作步骤
git rebase -i
提交时机
个人项目 vs. 多人项目
Revert Commit
Footer
Body
Header
课后练习
总结
Commit Message 规范自动化
修改 Commit Message
合并提交
提交频率
Commit Message 规范
规范设计

该思维导图由 AI 生成,仅供参考

你好,我是孔令飞。今天,我们继续学习非编码类规范中的 Commit 规范。
我们在做代码开发时,经常需要提交代码,提交代码时需要填写 Commit Message(提交说明),否则就不允许提交。
而在实际开发中,我发现每个研发人员提交 Commit Message 的格式可以说是五花八门,有用中文的、有用英文的,甚至有的直接填写“11111”。这样的 Commit Message,时间久了可能连提交者自己都看不懂所表述的修改内容,更别说给别人看了。
所以在 Go 项目开发时,一个好的 Commit Message 至关重要:
可以使自己或者其他开发人员能够清晰地知道每个 commit 的变更内容,方便快速浏览变更历史,比如可以直接略过文档类型或者格式化类型的代码变更。
可以基于这些 Commit Message 进行过滤查找比如只查找某个版本新增的功能:git log --oneline --grep "^feat|^fix|^perf"
可以基于规范化的 Commit Message 生成 Change Log
可以依据某些类型的 Commit Message 触发构建或者发布流程,比如当 type 类型为 feat、fix 时我们才触发 CI 流程。
确定语义化版本的版本号。比如 fix 类型可以映射为 PATCH 版本,feat 类型可以映射为 MINOR 版本。带有 BREAKING CHANGE 的 commit,可以映射为 MAJOR 版本。在这门课里,我就是通过这种方式来自动生成版本号。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何规范 Commit Message,以及在代码提交过程中需要关注的提交频率、合并提交和 Commit Message 修改等重要内容。作者首先强调了规范 Commit Message 的重要性,包括便于快速浏览变更历史、生成 Change Log、触发构建或发布流程等方面的作用。文章详细介绍了 Angular 规范的 Commit Message 格式,包括 Header、Body 和 Footer 三个部分的要求,以及在实际应用中的示例。此外,还介绍了提交频率的规定和合并提交的方法,以及如何使用 git rebase 命令进行交互式合并。总的来说,本文通过详细介绍 Commit Message 规范和代码提交相关的重要内容,帮助读者了解如何规范自己的 Commit Message,提高代码提交的质量和可读性。文章还介绍了如何修改 Commit Message,包括使用 git commit --amend 和 git rebase -i 命令的方法,帮助读者灵活处理提交信息的修改。整体而言,本文内容丰富,对于开发人员规范代码提交、合并和修改 Commit Message 非常有帮助。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言项目开发实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(47)

  • 最新
  • 精选
  • pudu168
    推荐一个网站: https://www.conventionalcommits.org/en/v1.0.0-beta.4/ 有中文版,之前一直使用的规范文档

    作者回复: 本讲,Commit message基于这个优化的

    2021-06-10
    24
  • wei 丶
    老师是不是rebase后push会出现 当前分支的最新提交落后于其对应的远程分支 我每次操作都有这个想要push必须要-f才可以 是我的操作的问题么??

    作者回复: 是的

    2021-08-11
    7
  • lianyz
    孔老师,一个commit里允许同时包含一个feat和一个fix吗?如何约束开发的同事?

    作者回复: 最好别,可以分两次提交

    2021-06-03
    2
    4
  • 兔嘟嘟
    git-chglog只需要安装好后git-chglog -o CHANGELOG.md ,就可以一键生成change log gsemver没搞懂怎么用

    作者回复: gsemver bump可以生成版本。 具体哪方面没搞懂呢

    2021-12-01
    3
  • stefen
    “我们希望将 feature/user 分支的 5 个 commit 合并到一个 commit,在 git rebase 时,需要保证其中最新的一个 commit 是 pick 状态,这样我们才可以将其他 4 个 commit 合并进去”, 我看了好几遍,应该是保持最旧一个commit是pick状态,不是最新一个commit 是 pick 状态.

    作者回复: 是的,我找编辑更新下,感谢反馈

    2022-10-29归属地:广东
    2
  • Calvin
    提交push了之后是不是不能修改了?

    作者回复: 还能修改。 修改后可以通过git push -f更新远端代码

    2022-02-22
    2
  • 好家庭
    请问修改了commit message之后所有的commit id改变,如果修改的是仓库中原有的commit,再提交到仓库会不会产生冲突?

    作者回复: 会的,可以push -f

    2021-09-14
    2
  • StayLet
    孔老师,为啥 “subject 的结尾不能加英文句号”?

    作者回复: 这个是angular规范规定的。 我理解,加英文句号首先作用不大。再有,有些工具会根据commit发送邮件,subject是邮件标题,邮件标题一般是不带英文句号的。

    2021-06-30
    2
    2
  • 🌆🌇🌉🌌
    老师,这个流程和git-flow哪个更好呢?

    作者回复: 跟gitflow一样的流程

    2021-06-03
    2
    2
  • enjoylearning
    我喜欢用英文提交,避免切换输入法

    作者回复: 都用英文确实很棒,我英文很蹩脚,所以索性都是用中文

    2022-10-25归属地:广东
    2
    1
收起评论
显示
设置
留言
47
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部