如何在 Git 书写良好的 Commit Messages

Why(为什么编写) | How(如何编写)

Why

A diff will tell you what changed, but only the commit message can properly tell you why

良好的 Messages 可以告诉人们变更的原因,更好高效地理解几个月前甚至几年前发生的事情。

  • 风格的一致性:语法,大小写,行距,标点符号等;
  • 内容:该提交的信息和不该提交的信息;
  • 元数据:清晰可追踪;

How

提交准则 | Time Pope 提供的一个模板

  • 首行:以少于 50 个字符(25个汉字)的单行开始且简要地描述变更;

    • 首字母大写;
    • 不以句号 (period) 结尾;
    • 使用祈使语气,如 Add new object
  • 空白行:将前后分隔开;
  • 解释部分:对所作变动更详细的解释
    • 之前行为的对比,如使用“Fix bug”而非“Fixed bug”或“Fixes bug”;
    • 72 个字符的时候手动换行;
    • 说明是什么 (what) 以及为什么 (why),不用说明这么操作的原理 (how);
    • Explain what and why vs. how

如何在 Git 书写良好的 Commit Messages的更多相关文章

  1. 如何写好 Git commit messages

    导语:任何软件项目都是一个协作项目,它至少需要2个开发人员参与,当原始的开发人员将项目开发几个星期或者几个月之后,项目步入正规.不过他们或者后续的开发人员仍然需要经常提交一些代码去修复bug或者实现新 ...

  2. 如何在Git中撤销一切 | 干货

    翻译:李伟 审校:张帆 译自:Github JF杰微刊:如何在Git中撤销一切 任何一个版本控制系统中,最有用的特性之一莫过于 "撤销(undo)"操作.在Git中,"撤 ...

  3. [Git] Undo my last commit and split it into two separate ones

    When you accidentally committed some changes to your branch you have various possibilities to “undo” ...

  4. [转]如何在 Git 里撤销(几乎)任何操作

    任何版本控制系统的一个最有的用特性就是“撤销 (undo)”你的错误操作的能力.在 Git 里,“撤销” 蕴含了不少略有差别的功能. 当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点 ...

  5. 【转】如何在Git中撤销一切

    翻译:李伟 审校:张帆译自:Github 任何一个版本控制系统中,最有用的特性之一莫过于 “撤销(undo)”操作.在Git中,“撤销”有很多种含义. 当你完成了一次新的提交(commit),Git会 ...

  6. git cherry-pick合并某个commit

    1.使用方法及其作用 git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作(操作的对象是commit).例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开 ...

  7. svn迁移到git仓库并保留commit历史记录

    svn迁移到git仓库并保留commit历史记录 最近在做svn迁移到gitlab,由于之前一直是由svn做版本控制.最简单的方式是将svn的内容export出来,然后添加到gitlab即可.但是,如 ...

  8. git中手动删除的文件如何在git中删除

    在日常开发中,我们可能或手动删除(delete键删除的)一些文件,然而我们本来应该是用git rm fileName命令删除的,但是现在我们手动删除了,那么要如何在git里面讲那些手动删除的文件删除呢 ...

  9. git 对比两个commit 之间的差异

    git 对比两个commit 之间的差异 比较两个版本之间的差异 git diff commit-id-1 commit-id-2 > d:/diff.txt 结果文件diff.txt中: &q ...

  10. Git合并最近的commit

    合并commit的做法一般用在pull request的时候,把开发同一功能时的所有琐碎的commit合并到一个(假装自己的代码是高质量代码(手动滑稽)).主要使用的命令是git rebase 或者g ...

随机推荐

  1. 在 .NET 9 中使用 Scalar 替代 Swagger

    前言 在.NET 9发布以后ASP.NET Core官方团队发布公告已经将Swashbuckle.AspNetCore(一个为ASP.NET Core API提供Swagger工具的项目)从ASP.N ...

  2. Solution Set -「Public NOIP Round #3 (Div. 1)」

    \(\mathscr{A}\sim\) 移除石子   Tags:「A.构造」「C.细节」   "显然" 直接按 \((x,y)\) 二元组排序后两两组成正方形! 喜提 \(90\t ...

  3. 还不会 Cert Manager 自动签发证书?一文掌握

    相信很多小伙伴对于 Cert Manager 不陌生,Cert Manager 是 Kubernetes 上的证书管理工具,基于 ACME 协议与 Let's Encrypt 签发免费证书并为证书自动 ...

  4. java设计模式---总则

    设计模式总则 一.概述 1.什么是设计模式 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 解释下: 分类编目:就是说可以找到一些特征去划分这些设计模式,从而进行分类. ...

  5. 动态添加html事件无响应

    问题描述:在页面中动态使用js添加的html中设置了onclick事件,生产页面后点击事件无效并提示:Cannot read property 'xxx' of undefined 如: $('.te ...

  6. Windows中GNURadio的安装

    对于一个常常使用Python的人来讲(此处指我),conda环境是必不可少的,(Anaconda或Miniconda). 在Windows中且已经安装过conda环境的情况下,安装GNURadio特别 ...

  7. Linux中ARP学习和老化机制

    本文分享自天翼云开发者社区<Linux中ARP学习和老化机制> 作者:云云生息 ARP学习和老化机制在Linux网络通信中起着至关重要的作用.ARP(Address Resolution ...

  8. RabbitMQ(八)——消息确认

    RabbitMQ系列 RabbitMQ(一)--简介 RabbitMQ(二)--模式类型 RabbitMQ(三)--简单模式 RabbitMQ(四)--工作队列模式 RabbitMQ(五)--发布订阅 ...

  9. GIT如何进行团队协作

    加入其他开发成员.修改代码并提交 选择库点击管理 点击添加成员邀请用户 以下三种方式都行 加入后如下 第二人如何进行修改文件: 在文件夹中创建本地库git init 建立远程连接 git remote ...

  10. 深入解析:Jupyter Notebook 中魔法命令的使用技巧与应用

    Jupyter Notebook 中的魔法命令为用户提供了诸多便利功能.魔法命令主要分为行魔法(Line magic)和单元魔法(Cell magic),行魔法前缀为"%",单元魔 ...