Git生态探索之Commit message 和 Change log 编写最佳实践

  • 时间:
  • 浏览:1
  • 来源:大发彩神在线计划—大发彩神计划怎么来的

背景

最近在学习规范何如使用git来更高效的开发,发现一个比较好用的来规范comment的工具,统统统统想来记录一下。一般来说,commit message 应该清晰明了,说明本次提交的目的。统统统统须要统统规范来使哪此comment变得可读,commitizen则是最近发现的一款比较易用的工具。

Body每段的格式是固定的,须要写成This reverts commit <hash>.,其中的hash是被撤出 commit 的 HSHA 标识符。

肯能当前 commit 与被撤出 的 commit,在同一个发布(release)顶端,这么它们时会会经常总出 在 Change log 顶端。肯能两者在不同的发布,这么当前 commit,会经常总出 在 Change log 的Reverts小标题下面

按照提示,我能 写出规范的message了

idea有插件都都都都可不能不能使用git commit template

fix: A bug fix

docs: Documentation only changes

style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)

refactor: A code change that neither fixes a bug nor adds a feature

perf: A code change that improves performance

test: Adding missing tests or correcting existing tests

(Move up and down to reveal more choices)

revert: type(scope): some comment

This reverts commit bfe3007ce57d87677c6c473c228e6c2ed8b81dcec.

Line 1 will be cropped at 3000 characters. All other lines will be wrapped after 3000 characters.

1.4 Revert

还有有一种特殊情形,肯能当前 commit 用于撤出 过后的 commit,则须要以revert:开头,顶端跟着被撤出 Commit 的 Header

全局安装commitizennode模块

npm install -g commitizen

关闭 Issue

肯能当前 commit 针对某个issue,这么都都都都可不能不能在 Footer 每段关闭这个 issue (可依次关闭过个issueCloses #123, #245, #992)

scope 用来说明本次Commit影响的范围,即简要说明修改会涉及的每段,比如数据层、控制层、视图层等,

subjectcomment所在的位置,这次提交的简短描述

1.2 Body 是对本次 commit 的完整性描述,都都都都可不能不能分成多行

1.3 Footer 每段只用于有一种情形

不兼容变动

肯能当前代码与上一个版本不兼容,则 Footer 每段以BREAKING CHANGE开头,顶端是对变动的描述、以及变动理由和迁移方法

feat: A new feature

? Select the type of change that you're committing: (Use arrow keys)

运行完以上一律使用git cz 代替git commit来提交代码,同去会显示一下选项来自动生成符合格式的commit message.

现在项目中肯能多出来dir:node_nodules, file:package.json, package-lock.json哪此目录和文件,这是node安装模块产生的,肯能时会node项目都都都都都可不能不能忽略掉,熟悉node的同学肯定都知道哪此是有用的了.

PS D:gitpythonPractice> git cz

cz-cli@2.10.1, cz-conventional-changelog@2.1.0

此时肯能会报找这么package.json的错误,使用下面命令来自动生成一个项目的package,统统统统在运行2中的命令.

npm init --yes

git的提交一般的初学者时会使用git commit -m "hello world"来提交comment,统统统统统统像hello world从前这么意义的comment我能 无法理解这次的提交到底是为了哪此,统统统统亲戚亲戚当当你们就要规范一下comment的规范了。

():

// 空一行

// 空一行

PS:下面是统统基础介绍肯能大佬请直接查看第二每段

其中,Header 是必需的,Body 和 Footer 都都都都可不能不能省略

在项目目录下运行命令

commitizen init cz-conventional-changelog --save --save-exact

commitizen同去都都都都可不能不能检查commit message是否是符合格式.

生成change log,还又统统高级用法比如ghooks

这里就不细说了.完整性请查看参考链接和validate-commit-msg

1.1 HEAD

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

feat:新功能(feature)

fix:修补bug

docs:文档(documentation)

style: 格式(不影响代码运行的变动)

refactor:重构(即时会新增功能,也时会修改bug的代码变动)

test:增加测试

chore:构建过程或辅助工具的变动

Example:

PS D:gitpythonPractice> git log

commit 58a7a966acb9aa2fffc0e02c9ce3be64b8949991 (HEAD -> master)

Author: Zhiwei Tian hebeitianzhiwei@outlook.com

Date: Fri Aug 17 17:38:36 2018 +030000