背景
最近,小伙伴吐槽同事们发版不喜欢打tag,导致上线出问题后不知道回退到哪个版本。于是,重新学习和整理了一下 Git tag
的使用。同时,将 npm version
的使用心得整理到了一起。
作用
Git tag通常用于标记版本发布的某一个点。例如,当我们有大型项目要发布到正式环境,我们会给这个commit打上一个版本tag,来标识它的版本信息。
常用命令介绍
下面主要介绍 tag 的常用命令,例如,添加、删除、共享标签、查看标签等。
添加 tag
添加 轻量标签
git tag <标签名>
// git tag 0.1.0
添加附注 tag
git tag -a -m <注释文字>
Git tag 中一共有两类标签,一类叫做轻量标签(Lightweight Tags),另一类叫做附注标签(Annotated Tags)。Git 的最佳实践推荐使用附注标签,因为当使用此类标签时,会将tag作为对象完整地存储到git数据库中,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明。
个人实践中,本地环境下个人使用使用轻量标签,但需要将标签分享给其他人时使用附注标签。
删除本地标签
git tag -d <标签名>
查看标签列表
git tag
// tag 列表
v0.1.0
v0.1.1
v0.1.2
v0.1.3
(END)
推送 tag 到远端
git push origin <标签名>
一次推送本地所有 tags,使用 --tags
选项:
git push origin --tags
删除远端 tag
git tag :refs/tags/
查看指定 tag
git show
npm version 使用
在 NodeJS 项目中,我们经常需要变更 package.json
中的版本信息。正常操作是,手动修改 package.json
文件的版本信息,然后再commit。每次这样做,操作太繁琐。实际上,我们可以使用 npm version
命令
npm version [ | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
major:主版本号
minor:次版本号
patch:补丁号
premajor:预备主版本
prepatch:预备次版本
prerelease:预发布版本
假设我们当前版本号为 "0.1.3",当需要更改次版本号时,使用命令 npm version minor
进行变更。
此时,该命令会进行两个操作:
- 更改
package.json
中version,将版本信息有 "0.1.3"更改为 "0.2.0" - 保存修改并生产一个新的commit
若需要指定commit 的信息,可以使用 -m
命令。
npm version patch -m "Upgrade to %s" # %s 会自动替换成版本号
小技巧
如何快速查看当前版本信息?
npm version
{ 'ts-hi': '0.2.1',
npm: '5.6.0',
ares: '1.10.1-DEV',
cldr: '32.0',
http_parser: '2.8.0',
icu: '60.1',
modules: '57',
napi: '3',
nghttp2: '1.32.0',
node: '8.11.4',
openssl: '1.0.2p',
tz: '2017c',
unicode: '10.0',
uv: '1.19.1',
v8: '6.2.414.54',
zlib: '1.2.11' }
如何查询 npm version 命令的使用方法
npm version ?
需要注意的是,使用 npm version
命令,需要当前工作区为clean状态,否则会执行失败。
总结
本文主要介绍了 git tag
和 npm version
命令的使用。在实际工作中,还是要养成经常打tag的习惯。有助于排查问题和回退版本。特别是,多人协作和SDK开发场景,当用重要功能或API更新时,及时使用tag标明版本信息。
参考资料
- Git的Tag使用
- 版本号管理策略&&使用npm管理项目版本号
- Git tag —— atlassian
- Git 基础 - 打标签