[iOS 开发] commit messages 该怎么写?

前言:
最近突然意识到,自己提交代码时有些随意了,每天都是把当天的所有修改放到临下班时一次性提交,也没有什么可追溯性,本着追求卓越的出发点,这些细节还是不能放过的。

什么时候需要 commit 呢?像 SVN 和 git 这样的版本控制工具是用来控制开发流程和记录的,所以每次 commit / 提交,都应该保证自己或别人在 code review 和以后的维护过程中能很容易看出这次提交改了什么,为什么改,以便于提升版本控制和项目管理的效率与质量。

那么 commit messages 究竟该怎么写呢?
首先来看看别人在这方面的讨论。比较推荐的是阮一峰的博客《Commit message 和 Change log 编写指南》和 Ruby China 社区的一篇帖子《写出好的 commit message》。这里总结一下大概的要求。

  • 关于格式
 (): 
 // 空一行
 
 // 空一行
 

每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。其中,Header 是必需的,Body 和 Footer 可以省略。
Header部分只有一行,包括三个字段:type(必需)、 scope(可选)和subject(必需)。

举个例子:

feat: Add network status monitor

Because the server needs to know what
 kind of network(WWAN or WiFi) a mobile
 client uses. 
This changes is based on 
AFNetworkReachabilityManager.

JIRA: YID-152
  • 自动生成 Commit message 格式的工具

程序员一定要善用工具,如果你使用的是 git,推荐使用 commitizen。

接下来再去看看一些经典的开源代码的提交记录,比如 AFNetworking 。

[iOS 开发] commit messages 该怎么写?_第1张图片
Commit messages in AFNetworking repository.png

从 AFNetworking 的提交记录来看,也基本上符合50/72格式:

 50-character subject line

 72-character wrapped longer description. This should answer:

 * Why was this change necessary?
 * How does it address the problem?
 * Are there any side effects?

 Include a link to the ticket, if any.

其中涉及到的 PR 和 commit 都列出了,这样的话就基本能保证,每条更改记录都有根可循。

从提交规范中也可以看出,每次提交的要便于理解,一眼能看出要知道这次改了什么,为什么改,所以每次提交所涉及的逻辑功能最好是单一的,一次提交的更改不要太复杂,如果确实有很复杂的问题,就拆解成小的任务。

参考:

  1. 使用 git commit 应该遵循怎样的规则?
    https://www.zhihu.com/question/20113028
  2. Commit message 和 Change log 编写指南:
    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
  3. 写出好的 commit message:
    https://ruby-china.org/topics/15737
  4. 如何写好 Git commit log?:https://www.zhihu.com/question/21209619
  5. thoughtbot/dotfiles的模板:
    https://github.com/thoughtbot/dotfiles/blob/master/gitmessage
  6. Writing good commit messages:
    https://github.com/erlang/otp/wiki/Writing-good-commit-messages

如果你也喜欢交流技术、喜欢阅读、积极践行,欢迎关注我的公众号:祥龙Shannon写字的地方,一起成长。

[iOS 开发] commit messages 该怎么写?_第2张图片
qrcode_for_gh_cc686217be41_344.jpg

你可能感兴趣的:([iOS 开发] commit messages 该怎么写?)