发布于 2026-01-06 0 阅读
0

提交信息应该包含多少内容以及大小是多少?

提交信息应该包含多少内容以及大小是多少?

开发者编写的代码变成了一个bug,而这个bug最终会被开发者吞噬。

首先,为什么我还要写提交信息?Git 已经生成了唯一的哈希值,为什么还需要写提交信息?

为什么?

实际上,这不是必需的。您可以使用此标志进行不带消息的 Git 提交--allow-empty-message

git commit --allow-empty-message -m ''
Enter fullscreen mode Exit fullscreen mode

但是,我并不建议你这样做,即使你已经提交过至少一次包含类似如下信息的更改:

.
last update
more changes

那么,我们在这里会看到什么呢?基本上,就是如何做出好的提交。这包括提交信息、提交大小和提交顺序,这些只是建议。

在本文末尾,我将介绍一些工具,帮助我们遵循这些技巧并撰写好的信息。

🏁 让我们看看如何进行优雅的提交!

我想先谈谈消息本身,但要写出好的消息,第一步是为我们的提交定义一个合适的大小。

蜂蜜,大小很重要。

📐 提交多少才算合适?

没有确切的尺寸标准,但有一些指导原则建议您遵循:

  1. 原子性:每次提交都应该专注于解决一个具体问题或实现某个功能。

  2. 清晰度和可读性:提交内容应该清晰易懂。每次提交都应该是独立的,不应依赖其他提交才能理解其含义。

  3. 频率:提交操作应该频繁进行,但不要过于频繁。

  4. 可测试性:提交引入的更改不应破坏现有的测试。

  5. 可逆性:如果提交引入了错误或意外后果,应该很容易撤销该提交,而不会影响代码库的其他部分。

  6. 可审查性:保持提交内容小而集中,便于团队成员审查代码更改并提供反馈。

  7. 一致性:一致性有助于理解代码库的开发历史,并使浏览提交日志变得更加容易。

考虑到这些因素,我们可以采用一些方法来决定如何将提交拆分成更小的提交。其中一些方法包括:

分蛋糕

  1. 功能性变更与重构:将功能性变更(添加新功能、修复错误)的提交与专注于重构或提升代码质量但不改变行为的提交分开。这有助于更有效地审查和理解变更。

  2. 关键变更与非关键变更:如果您的变更既包含关键变更(例如,安全修复、重大漏洞修复),也包含非关键变更,请考虑将它们拆分为单独的提交。这样可以加快关键变更的审核和部署速度。

  3. 面向用户的变更与内部变更:将影响用户界面或用户体验的提交与纯粹的内部变更(例如,性能优化、代码重组)分开。这有助于了解对最终用户的影响。

我想谈谈我一直在遵循的一种模式,它融合了上述每种模式的某些特点。为此,我将以前端代码为例,但这种模式也适用于其他任何领域。

假设我们要在一个小型应用程序中添加翻译功能。对于这个假设的功能,我做了以下更改:

文件更改

很明显,改动数量很少。但我会把它们分成4 个提交

1. 首先是这两个 JSON 翻译文件

  • public/locales/en/login.json
  • public/locales/pt/login.json

这些文件是新创建的,尚未在我们的应用程序的任何部分中使用,因此不会造成任何风险。我首先提交它们。但是,最好将它们与其他新文件分开,因为这段代码会对用户产生直接影响。

2. 其次,有两个文件插入新包

  • package.json
  • package-lock.json

此次提交中只保留这两个文件,可以很容易地找到是谁在项目中插入、删除或升级了软件包。

3. 第三部分包含 1 个尚未导入的新文件

  • src/i18n.ts

这是新代码,并未被我们现有代码的任何部分导入,因此不会构成任何风险。此外,这是一项内部变更,不会对用户产生直接影响。

4. 第四,与 1 一起对现有组件进行更改

  • src/App.tsx

最后,也是最“危险”的改动,我修改了一个现有文件。最好将其单独保存,这样万一需要回滚,我只需要回滚这部分代码。

为了更清楚地说明风险,假设所有变化都存在一定程度的风险,该风险由其发生的概率和严重程度决定:

代码风险

基于此,更容易确定哪些更改需要单独提交,以便于回滚。

📝 提交信息中应该包含什么内容比较好?

现在,回到我们最初的问题,我为什么要编写提交信息?

“逻辑推理能力不仅来源于数学,也来源于生活。”

画进洞穴

我们祖先公元前40000年的理由与以下理由相同:

  • 沟通
  • 学习与教学

对我们来说,最重要的是:

  • 帮助看到这一幕的人

这条信息将引导并帮助需要查找代码内容的用户。有时它可能无关紧要,但有时它却能帮助我们恢复产品的功能状态。

因此,您可以遵循一些模式,例如:

  1. 传统承诺
    feat(service)!: add integration with xpto

  2. 吉特莫吉
    ✨ add integration with xpto

  3. 原子
    🎨 Add integration with xpto

  4. 自定义:您可以根据自己的喜好进行定义,只需记录下来即可。
    🆕 [FF-666] add integration with xpto

尝试在提交信息中使用表情符号作为前缀!这会很有帮助,就像垃圾桶颜色鲜艳、易于识别一样。

回收箱

你不信?看看下面的例子:试着找到我删除文件的提交记录!

传统提交与 Git 表情符号的区别

🧠 帮助我们进行提交的工具

最后,我们还有一些工具可以帮助我们追踪模式并定义我们的信息:

  • AI提交使用AI编写提交信息
  • Copilot可以配置 Git,使其与你的编辑器兼容,它会帮助你编写提交信息。
  • Commitizen定义了一个用于编写提交信息的界面,并自动为您的提交信息添加前缀和后缀。(以及其他不相关的功能

以上就是全部内容,感谢阅读!

文章来源:https://dev.to/codermarcos/what-is-a-good-message-and-size-for-a-commit-2edd