写出好的 commit message

简介: 为何要关注提交信息 加快Reviewing Code的过程 帮助我们写好release note 5年后帮你快速想起来某个分支,tag或者 commit增加了什么功能,改变了哪些代码 让其他的开发者在运行 git blame 的时候想跪谢 总之一个好的提交信息,会帮助你提高项目的整体质量 基本要求 第一行应该少于50个字。

 

为何要关注提交信息

  • 加快Reviewing Code的过程
  • 帮助我们写好release note
  • 5年后帮你快速想起来某个分支,tag或者 commit增加了什么功能,改变了哪些代码
  • 让其他的开发者在运行 git blame 的时候想跪谢
  • 总之一个好的提交信息,会帮助你提高项目的整体质量

基本要求

  • 第一行应该少于50个字。 随后是一个空行 第一行题目也可以写成:Fix issue #8976
  • 喜欢用 vim 的哥们把下面这行代码加入 .vimrc 文件中,来检查拼写和自动折行
autocmd Filetype gitcommit setlocal spell textwidth=72
  • 永远不在 git commit 上增加 -m <msg>--message=<msg> 参数,而单独写提交信息

一个不好的例子 git commit -m "Fix login bug"

一个推荐的 commit message 应该是这样:

Redirect user to the requested page after login

https://trello.com/path/to/relevant/card

Users were being redirected to the home page after login, which is less
useful than redirecting to the page they had originally requested before
being redirected to the login form.

* Store requested path in a session variable
* Redirect to the stored location after successfully logging in the user
  • 注释最好包含一个连接指向你们项目的 issue/story/card。一个完整的连接比一个 issue numbers 更好
  • 提交信息中包含一个简短的故事,能让别人更容易理解你的项目

注释要回答如下信息

为什么这次修改是必要的?

要告诉 Reviewers,你的提交包含什么改变。让他们更容易审核代码和忽略无关的改变。

如何解决的问题?

这可不是说技术细节。看下面的两个例子:

Introduce a red/black tree to increase search speed
Remove <troublesome gem X>, which was causing <specific description of issue introduced by gem>

如果你的修改特别明显,就可以忽略这个。

这些变化可能影响哪些地方?

这是你最需要回答的问题。因为它会帮你发现在某个 branch 或 commit 中的做了过多的改动。一个提交尽量只做1,2个变化。

你的团队应该有一个自己的行为规则,规定每个 commit 和 branch 最多能含有多少个功能修改。

小提示

  • 使用 fix, add, change 而不是 fixed, added, changed
  • 永远别忘了第2行是空行
  • Line break 来分割提交信息,让它在某些软件里面更容易读
  • 请将每次提交限定于完成一次逻辑功能。并且可能的话,适当地分解为多次小更新,以便每次小型提交都更易于理解。

例子

Fix bug where user can't signup.

[Bug #2873942]

Users were unable to register if they hadn't visited the plans
and pricing page because we expected that tracking
information to exist for the logs we create after a user
signs up.  I fixed this by adding a check to the logger
to ensure that if that information was not available
we weren't trying to write it.
Redirect user to the requested page after login

https://trello.com/path/to/relevant/card

Users were being redirected to the home page after login, which is less
useful than redirecting to the page they had originally requested before
being redirected to the login form.

* Store requested path in a session variable
* Redirect to the stored location after successfully logging in the user

本文参考阅读

 

目录
相关文章
|
安全 Linux 网络安全
组网神器WireGuard安装与配置教程(超详细)
组网神器WireGuard安装与配置教程(超详细)
33840 2
|
传感器 监控 API
基于STM32的智能灌溉系统设计与实现
基于STM32的智能灌溉系统设计与实现
981 1
|
5月前
|
NoSQL Redis 数据库
Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
通过本文的介绍,我们详细讲解了 Lua 脚本在 Redis 中的作用、`eval` 命令的使用方法以及 `redis.call` 和 `redis.pcall` 的区别和用法。通过合理使用 Lua 脚本,可以实现复杂的业务逻辑,确保操作的原子性,并减少网络开销,从而提高系统的性能和可靠性。
188 13
|
12月前
|
机器学习/深度学习 人工智能 搜索推荐
探索人工智能在医疗健康领域的革新应用
本文将深入探讨人工智能(AI)技术在医疗健康领域的创新应用,从智能诊断系统、个性化治疗计划的制定到患者监护与健康管理,揭示AI如何提高医疗服务的效率和质量。通过分析具体案例,如AI辅助癌症检测和遗传病风险评估,本文旨在展现AI技术在现代医疗体系中扮演的关键角色,以及其对未来医疗保健的潜在影响。
Math.atan2求角度解析
`Math.tan(x/y)` 求得是与y轴的夹角,而 `Math.atan2(y, x)` 求得是与x轴的夹角(范围:\(-\pi\) 到 \(\pi\)),顺时针为负,逆时针为正。`Math.atan2` 函数注意点:y在前,x在后。它能正确处理各象限的角度,例如 `Math.atan2(1, 1)` 返回 \(\frac{\pi}{4}\),而 `Math.atan2(-1, -1)` 返回 \(-\frac{3\pi}{4}\)。
185 0
Math.atan2求角度解析
|
网络架构
【专栏】网络技术:网速和带宽的区别,带宽是网络的最大传输能力,而网速是实际传输速率,受网络拥堵、硬件性能等因素影响
【4月更文挑战第28天】本文探讨了网速和带宽的区别,带宽是网络的最大传输能力,而网速是实际传输速率,受网络拥堵、硬件性能等因素影响。两者关系可比喻为道路车道数与车辆速度。了解这些有助于优化网络体验,如选择合适带宽、升级硬件、使用有线连接、管理带宽占用和连接时机。理解二者差异能帮助我们更好地评估网络服务并提升上网效率。
570 1
|
人工智能 自然语言处理 测试技术
通义灵码评测: 阿里云出品通义大模型AI代码编程辅助工具
通义灵码是阿里云出品的一款基于通义大模型的AI智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云 SDK/OpenAPI 的使用场景调优,助力开发者高效、流畅的编码。
1373 0
|
机器学习/深度学习 Python
【Python 机器学习专栏】堆叠(Stacking)集成策略详解
【4月更文挑战第30天】堆叠(Stacking)是机器学习中的集成学习策略,通过多层模型组合提升预测性能。该方法包含基础学习器和元学习器两个阶段:基础学习器使用多种模型(如决策树、SVM、神经网络)学习并产生预测;元学习器则利用这些预测结果作为新特征进行学习,生成最终预测。在Python中实现堆叠集成,需划分数据集、训练基础模型、构建新训练集、训练元学习器。堆叠集成的优势在于提高性能和灵活性,但可能增加计算复杂度和过拟合风险。
1439 0
|
Web App开发 安全 数据安全/隐私保护
浏览器书签跨设备、跨平台同步:floccus+坚果云的解决方案
本文介绍基于floccus插件与坚果云协同使用的方法,对浏览器的书签进行实时在线同步的操作~
836 1
浏览器书签跨设备、跨平台同步:floccus+坚果云的解决方案
|
安全 算法 网络协议
MPLS vpn和IPSEC vpn
MPLS vpn和IPSEC vpn
909 0