惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 三生石上(FineUI控件)
云风的 BLOG
云风的 BLOG
C
Check Point Blog
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Forbes - Security
Forbes - Security
IT之家
IT之家
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
雷峰网
雷峰网
N
News | PayPal Newsroom
The Last Watchdog
The Last Watchdog
V
Visual Studio Blog
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Webroot Blog
Webroot Blog
TaoSecurity Blog
TaoSecurity Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Schneier on Security
Schneier on Security
P
Privacy International News Feed
G
Google Developers Blog
博客园 - 聂微东
博客园 - 叶小钗
M
MIT News - Artificial intelligence
Apple Machine Learning Research
Apple Machine Learning Research
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Simon Willison's Weblog
Simon Willison's Weblog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
H
Hacker News: Front Page
Martin Fowler
Martin Fowler
L
Lohrmann on Cybersecurity
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
S
Security @ Cisco Blogs
博客园_首页
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
Help Net Security
Help Net Security
Google DeepMind News
Google DeepMind News
T
Threatpost

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(5):群晖硬盘休眠设置与分析 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 简单了解 PKCS 规范 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 数字证书分类及怎么区分各类数字证书 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
规范 git commit message 与自动化版本控制
2020-04-13 · via Razeen`s Blog

git commit message是你对你所编码内容的总结概括。规范、详细的git commit message不仅能体现你的内容概括能力,还能为你自己和团队,或项目带来巨大的好处,这也是我所推崇的。但很多小伙伴不愿意花时间在这里,经常会写出优化了一些功能修复了一些BUG等等模糊不清的commit message,完全没有意识到这么写会带来一些严重的问题:

  • 管理者/其他项目参与者无法快速获取有用信息,判定修改内容,只有花大量时间阅读源码;
  • 事后无法快速定位以前遇到的类似问题;
  • 无法自动化版本控制,只有每次重新阅读代码,手动写一些详细的描述,用来发布新版或提交测试。

规范、详细的git commit message不仅能解决这些问题,还能带来更多的好处。

  • 提供详细的历史信息,方便快速浏览,不用花大量时间阅读源码;

  • 提供高效的团队合作,参与者能从提交信息中看到项目的进度;

  • 可以快读定位问题,如果现在出现一个BUG,可以从BUG的类型,通过提交信息快读定位可能是哪次修改带来的;

  • 可以直接从commit中总结周报,日报,项目报告;

  • 可以直接从commit生成CHANGELOG;

  • 影响团队其他成员,培养大家养成良好的习惯。

下面我们推荐一个git commit message书写规范,以及如何通过commit message自动完成版本控制,生成CHANGELOG。

规范

我们严格遵循Conventional Commits 的约定,详细内容可以点击链接查看,下面我们简单总结一下。

commit messge格式如下:

<type>[optional scope]: <description>

[optional body]

[optional footer]

我们先举几个例子,再详细解析这个格式,如下:

feat(xxx): 新增了xxx功能,实现了xxx 
BREAKING CHANGE: 我们需要切换到V2了
fix(comment): 修复多用户评论时,顺序错乱问题
feat(comment): 新增用户评论功能
chore(comment): 新增了评论部分的swagger文档
docs(readme): 创建README.md文件

是不是不用我解释就懂了,对的就这么简单:

  • <type> : 是指本次提交的类型,一般有feat,fix,chore,docs,style,refactor,perf,test等,这里我推荐使用feat,fix,chore,docs四个,也就先说明这几个,更多的看这里
    • feat: 说明本次提交的是一个新的feature;
    • fix: 修复了一个bug;
    • chore: 一些没有构成feature, 但又不是其他类型的提交;
    • docs: 只是修改了文档相关的内容。
  • [optional scope]: 从单词的意思我们不难看出, 这里可以选填一个范围,也就是说,我们可以通过该关键词说明本次提交影响的范围(或许是一个模块,某一个功能,某一个业务等)。
  • <description> : 这里就是我们需要详细的描述本次提交内容的部分了。
  • [optional body] ,[optional footer] 如果还有需要补充或者详细展开的部分,我们可以在这两个部分说明。

自动化版本控制

有了规划化的提交后,我们就可以利用standard-version实现自动化版本控制与CHANGELOG自动生成了。

首先,我们全局安装一下standard-version

npm install -g standard-version

安装完成,可以查看一下版本,推荐一个团队最好使同一个大版本,避免一些奇怪的问题。

standard-version --version

当然,你也可以直接安装指定版本。

npm install -g standard-version@7.1.0

有了规范的提交与standard-version 后,我们就可以愉快的进行版本控制和自动生成CHANGELOG了,只需要每次提交之后,在你的项目下面运行:

即可。

我们很容易想到,standard-version可能会将git commit message, 自动整理生成CHANGELOG。 但版本升级怎么做到,规则是怎么样的呢?

这就取决于上面的git commit message中的type了。

  • 其中 fix对应于语义版本patch, 白话一点就是升级0.0.1个版本;
  • feat对应于与minor,也就是升级0.1.0个版本;

那么怎么实现从1.0.0 2.0.0呢,也就是改变major版本呢?

  • 其实只要在任何类型commit message后面的[optional body][optional footer]部分,以**BREAKING CHANGE: ** 开头,写一些版本升级的内容即可,如:

    feat(xxx): 新增了xxx功能,实现了xxx 
    BREAKING CHANGE: xxxxxx
    

这里我们补充点语义版本控制的内容。

通常我们看到的版本是这样的:1.1.11.0.0-beta.11 或者 1.0.0-rc ,其实这种写法就是遵循语义化版本规范的,详细内容可以点上面链接查看,我们主要说明一下核心语法,即:

<version core> ::= <major> "." <minor> "." <patch>

也就是版本 1.2.3,主版本号为1,次要版本为2,补丁号为3.

到这里你应该对规范化的git commit message有所了解,以及知道通过standard-version控制版本与自动生成CHANGELOG了。希望能对你有所帮助,养成良好的习惯,从而提高生产效率。