-
Notifications
You must be signed in to change notification settings - Fork 73
Git Commit Message Style
Iceyer edited this page Mar 27, 2020
·
8 revisions
注意: commit 信息必须使用英文进行编写。
简单的描述下这个commit改变了什么。(不超过 50 个字.若隶属某个模块可以使用模块名+':'的形式) <若有正文则此处*必须*空一行> 如果有更细致的描述就写在这里。每一行不要超过 72 个字。 这里应该描述为什么要这样做以及是如何 <若正文需要可以选择空行> 正文内容可以使用 ‘-’,‘**’ 等非常通用的标记。但标题中不允许出现。 Resolves: bug 描述的具体地址。元信息可以不遵循 72 字 wrap 的规定 <元信息需要使用空行分离> See also: - 若有多个链接则采用多行See also: 的形式进行表达 - 其他 CL 链接或 bug 链接 - 对某些功能或 bug 有影响的链接
关于链接有两点需要注意
- 应使用可以直接访问到的地址。不可以是一个 bugid 或 CL id 号
- 链接的访问权限不应该高于此 commit 的访问权限。简单的说就是能看到 commit 的人也需要可以访问到 commit 中的链接 (未解决tower问题前此处不限制tower任务)
”基本格式“看起来非常简单。但仅仅达到基本格式的要求依旧写不出好的 commit。但只要我们遵循以下 7 条原则,基本很难 写出差的commit。更详细的参考资料 7条原则
- Separate subject from body with a blank line
- Limit the subject line to 50 characters
- Capitalize the subject line
- Do not end the subject line with a period
- Use the imperative mood in the subject line
- Wrap the body at 72 characters
- Use the body to explain what and why vs. how
第 3,4 条,说的是一个简单的事实:第一行是标题,标题首字母大写(由于使用Angular Commit Message Format,不用遵守第三条,不需要首字母大写),标题不是句子不需要句号。
第 5 条,使用祈使句非常非常重要。简单的说,第一个动词用原型,不要 使用 ing 或 ed 的形式。
第 7 条,重点描述做了什么以及为何要这样做而不是那样做。代码的 diff 会告诉后来者你选择的方式是怎么做的。但代码无法记录做这个 change 时 候的决策。
遵循 7 条基本原则后的 commit 已经看上去不错了。但还有很多方式可以 让我们更容易更自然的写出优秀的 commit
- 不要使用
git commit -m <msg>
让编辑器来保障你不会犯丢人的错误吧。 - 在 commit 的编辑器中开启拼写检查。伙计,全世界都盯着在,像你这么厉害的人不想被人翻老底吧。
- 使用
git add -p
或者magit
来方便快捷的对一个文件的部分区域 进行提交。绝大多时候写不出第一行就是因为一次提交过多了。让你的 commit 更加原子性吧。 - 使用 Angular Commit Message Format, 可以方便使用clog工具生成CHANGELOG.md. 参考: Generate CHNAGELOG.md with clog
- 参考动词 (可参考 jenkins的changelog)
- Fix
- Release
- Change
- Remove
- Add
- Implement
- Enable
- Improve
- Refactor
- Update
- Make
- Reduce
- https://github.com/erlang/otp/wiki/Writing-good-commit-messages
- http://git-scm.com/book/ch5-2.html
- http://www.freshconsulting.com/atomic-commits/
- https://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message
- https://news.ycombinator.com/item?id=10212582
Welcome to join the Deepin developer community. You could talk about even everything in the following channels:
-
GitHub developer center(recommended)
-
IRC #deepin channel(recommended)
- Google groups: deepin-users, deepin-developers