前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >受够了!这糟糕的git commit记录

受够了!这糟糕的git commit记录

作者头像
机智的程序员小熊
发布2021-06-21 20:01:40
8610
发布2021-06-21 20:01:40
举报
文章被收录于专栏:技术面面观技术面面观

你有没有这么写过 commit

你是否再也无法忍受随意的风格?每次更新版本都不清楚更新了哪些功能?修复了哪些 bug?溯源的时候非常痛苦?不如试试国际知名项目angular.js的提交规范

还可以配置生成 ChangeLog,就像这样

简单尝试一下

该怎么做呢?先来简单尝试一下,随意一个个提交

git commit -m "feat: xxxx"

安装自动生成 Changelog 的组件,npm 自行安装

npm install -g conventional-changelog
npm install -g conventional-changelog-cli

如果报错可切换到淘宝源

npm config set registry https://registry.npm.taobao.org

自动生成

conventional-changelog -p angular -i CHANGELOG.md -s

生成效果,出现 CHANGELOG.md 文件,可以自行拷贝到 tag 说明里

# (2021-06-13)

### Features

- xxx ([572c950](https://github.com/golang-minibear2333/gin-blog/commit/572c9501ae291dafe26c03fdb8d4544d43a09567))

写入启动项,以后用changelog命令就可以执行啦

sudo -i
echo alias changelog=\"conventional-changelog -p angular -i CHANGELOG.md -s\" >> /etc/rc.local

PS: mac 系统需要设置开机启动功能

commit 规范

实战完毕,简单介绍下格式

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

举例

feat(日志): 更新日志模块

1. 使用lumberjack库增加日志模块
2. 配置全局配置并接入配置中心

Close #1

  • 其中 type 指提交类型,必选
  • scope 可选,指 commit 的影响范围,比如会影响到哪个模块/性能/哪一层(业务层,持久层,缓存,rpc),如果是特性代码,可以写特性名称
  • subject 必选,简短描述
  • body 可选,详细描述,表明代码提交的动机
  • footer 可选,结尾,可以是不兼容变更说明,也可以是关闭 issue

type 展开说明

feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style:格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动

footer 展开说明

以 BREAKING CHANGE 开头,后面是变更的具体描述,表示不兼容变更

BREAKING CHANGE: 配置文件全部提取到配置中心,仅保留配置中     心注册url

    Before:

    Server:
      RunMode: debug
      HttpPort: 8000
      ReadTimeout: 60
      WriteTimeout: 60

    After:

    Server:
      RunMode: debug
      configUrl: http://192.168.1.1:8010

也可以关闭 issue

Close #1

自动生成

用交互式的方式自动生成 commit message,运行下面命令,使全局其支持 Angular 的 Commit message 格式。

echo '{"path":"cz-conventional-changelog"}' > ~/.czrc

以后你执行 git cz 就可以替代git commit -m

$ git add .
$ git cz
cz-cli@4.2.4, cz-conventional-changelog@3.2.0

? Select the type of change that you're committing: (Use arrow keys)
❯ feat:     A new feature
  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)
  • 使用上下键选择类型,按步骤操作即可

限制别人的提交

提交是自由的,能规范自己的提交,能规范别人的提交吗,是可以的,安装组件

npm install husky --save-dev

会自动生成 package.json 文件,在里面追加内容

  "husky": {
    "hooks": {
      "commit-msg": "commitlint -e $GIT_PARAMS"
    }
  }

这样就可以完成自动校验了,但是如果本地安装 node 也白搭

如果是自建服务器可以通过修改--bare下的 hooks 文件来操作,但开源代码无法这样操作,.git 目录也不能提交,husky的方案,可以下载代码后通过node运行时更新hooks文件

我没办法给中心所有项目提出这样的规范,也没办法规定每个人都安装 node,规范下自己还是可以做到的

小结

npm config set registry https://registry.npm.taobao.org
npm install -g conventional-changelog
npm install -g conventional-changelog-cli
sudo -i
echo alias changelog=\"conventional-changelog -p angular -i CHANGELOG.md -s\" >> /etc/rc.local
npm install husky --save-dev

package.json 文件,在里面追加内容

  "husky": {
    "hooks": {
      "commit-msg": "commitlint -e $GIT_PARAMS"
    }
  }

未来提交就用

git cz

引用

一个维护版本日志整洁的 Git 提交规范

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机智的程序员小熊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你有没有这么写过 commit
  • 简单尝试一下
  • commit 规范
  • type 展开说明
  • footer 展开说明
  • 自动生成
  • 限制别人的提交
  • 小结
  • 引用
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档