Skip to content

Git提交的正确姿势

About 849 wordsAbout 3 min

git

2024-02-02

使用 git 也很多年了,但是每次 commit 的时候,都是随便提交写一些 commit, 像是git commit -m '111'(这个不是我写的哈,是我看见别人这样提交的),有的时候我都会看到 commit 的信息是 1,像这种情况追溯的时候肯定是不行的。

所以提交 commit 的时候需要规范。

一、Commit Message 的作用

格式化的 commit message 有几个好处

1、提供更多的历史信息,方便快速浏览

比如,下面的命令显示上次发布后的变动,每个 commit 占据一行。你只看首行,就知道每次 commit 的目的。

git log <last tag> HEAD --pretty=format:%s

2、可以过滤某些 commit(比如文档改动),便于快速查找信息

比如下面的命令仅仅展示本次发布新增的功能

git log <last release> HEAD --grep feature

3、可以直接从 commit 生成 change log

change log 是发布新版本的时候,用来说明与上一个版本差异的文档。

二、Commit Message 的格式

每次提交,commit message 都包含三个部分: header body 和 footer

<type>(<scope>): <subject>// 空一行<body>// 空一行<footer>

1、Header

header 部分只有一行,包括三个字段, type 必需、scope 可选和 subject 必需

type

type 用于说明 commit 的类别,只允许使用下面 7 个标识

  • feat:新功能(feature)
  • fix:修补 bug
  • docs:文档(documentation)
  • style:格式(不影响代码运行的变动)
  • refactor:重构(既不新增功能,也不修改 bug 的代码改动)
  • test:增加测试
  • chore:构建过程和辅助工具的变动 如果 type 为 feat 和 fix,则该 commit 将可定出现在 change log 之中。其他情况自己决定要不要放到 change log,建议不要。

scope

scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等

subject

subject 是 commit 目的的简短描述,不超过 50 个字符。

  • 以动词开头,使用第一人称现在是,比如 change, 而不是 changed 或者 changes
  • 第一个字母小写
  • 结尾不加句号

2、body

body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例

More detailed explanatory text, if necessary.  Wrap it to
about 72 characters or so. Further paragraphs come after blank lines.- Bullet points are okay, too- Use a hanging indent

有两点注意:

  • 使用第一人称现在是,比如使用 change,而不是 changed 或 changes
  • 应该说明代码的变更动机,以及与前行为的对比。

3、footer

footer 部分只用于两种情况

  • 不兼容变动,如果当前代码与上一个版本不兼容,则 footer 部分以 BREAKING CHANGE 开头,后面是对变动的描述。
  • 关闭 issue,如果当前 commit 针对某一个 issue,那么可以在 footer 部分关闭这个 issue Closes #234, #245

三、Commitizen

commitizen 是一个撰写合格 commit message 的工具。 安装命令:npm install -g commitizen 然后在项目目录里面,运行下面的命令,使其支持 Angular 的 commit message 格式。commitizen init cz-conventional-changelog --save --save-exact 以后,范式用到 git commit 命令,一律改为使用 git cz,这样就会出现相应的选项用来生成符合条件的 commit message 信息。

四、参考文章

Git 提交的正确姿势:Commit message 编写指南

Changelog

Last Updated: View All Changelog
  • feat(wiki): hammeSpoon: 复制出来的文件需要重新生成永链

    On 3/27/25

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!