提交信息应该包含多少内容以及大小是多少?
首先,为什么我还要写提交信息?Git 已经生成了唯一的哈希值,为什么还需要写提交信息?
实际上,这不是必需的。您可以使用此标志进行不带消息的 Git 提交--allow-empty-message:
git commit --allow-empty-message -m ''
但是,我并不建议你这样做,即使你已经提交过至少一次包含类似如下信息的更改:
❌ .
❌ last update
❌more changes
那么,我们在这里会看到什么呢?基本上,就是如何做出好的提交。这包括提交信息、提交大小和提交顺序,这些只是建议。
在本文末尾,我将介绍一些工具,帮助我们遵循这些技巧并撰写好的信息。
🏁 让我们看看如何进行优雅的提交!
我想先谈谈消息本身,但要写出好的消息,第一步是为我们的提交定义一个合适的大小。
📐 提交多少才算合适?
没有确切的尺寸标准,但有一些指导原则建议您遵循:
-
✅原子性:每次提交都应该专注于解决一个具体问题或实现某个功能。
-
✅清晰度和可读性:提交内容应该清晰易懂。每次提交都应该是独立的,不应依赖其他提交才能理解其含义。
-
✅频率:提交操作应该频繁进行,但不要过于频繁。
-
✅可测试性:提交引入的更改不应破坏现有的测试。
-
✅可逆性:如果提交引入了错误或意外后果,应该很容易撤销该提交,而不会影响代码库的其他部分。
-
✅可审查性:保持提交内容小而集中,便于团队成员审查代码更改并提供反馈。
-
✅一致性:一致性有助于理解代码库的开发历史,并使浏览提交日志变得更加容易。
考虑到这些因素,我们可以采用一些方法来决定如何将提交拆分成更小的提交。其中一些方法包括:
-
功能性变更与重构:将功能性变更(添加新功能、修复错误)的提交与专注于重构或提升代码质量但不改变行为的提交分开。这有助于更有效地审查和理解变更。
-
关键变更与非关键变更:如果您的变更既包含关键变更(例如,安全修复、重大漏洞修复),也包含非关键变更,请考虑将它们拆分为单独的提交。这样可以加快关键变更的审核和部署速度。
-
面向用户的变更与内部变更:将影响用户界面或用户体验的提交与纯粹的内部变更(例如,性能优化、代码重组)分开。这有助于了解对最终用户的影响。
我想谈谈我一直在遵循的一种模式,它融合了上述每种模式的某些特点。为此,我将以前端代码为例,但这种模式也适用于其他任何领域。
假设我们要在一个小型应用程序中添加翻译功能。对于这个假设的功能,我做了以下更改:
很明显,改动数量很少。但我会把它们分成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年的理由与以下理由相同:
- 沟通
- 学习与教学
对我们来说,最重要的是:
- 帮助看到这一幕的人
这条信息将引导并帮助需要查找代码内容的用户。有时它可能无关紧要,但有时它却能帮助我们恢复产品的功能状态。
因此,您可以遵循一些模式,例如:
-
传统承诺
feat(service)!: add integration with xpto -
吉特莫吉
✨ add integration with xpto -
原子
🎨 Add integration with xpto -
自定义:您可以根据自己的喜好进行定义,只需记录下来即可。
🆕 [FF-666] add integration with xpto
尝试在提交信息中使用表情符号作为前缀!这会很有帮助,就像垃圾桶颜色鲜艳、易于识别一样。
你不信?看看下面的例子:试着找到我删除文件的提交记录!
🧠 帮助我们进行提交的工具
最后,我们还有一些工具可以帮助我们追踪模式并定义我们的信息:
- AI提交使用AI编写提交信息
- Copilot可以配置 Git,使其与你的编辑器兼容,它会帮助你编写提交信息。
- Commitizen定义了一个用于编写提交信息的界面,并自动为您的提交信息添加前缀和后缀。(以及其他不相关的功能)
以上就是全部内容,感谢阅读!
文章来源:https://dev.to/codermarcos/what-is-a-good-message-and-size-for-a-commit-2edd








