> For the complete documentation index, see [llms.txt](https://kasoqian.gitbook.io/code_standard/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kasoqian.gitbook.io/code_standard/git/version.md).

# 项目版本号

## 介绍

版本号是项目的一部分，然而很容易忽视的是其背后的含义。本文讲述如何正确的使用版本号，达成有效的信息传递。

## 开始使用

版本号的基本格式约束为`X.Y.Z`的形式，含义分别如下

**X.Y.Z**

* X 主版本号
* Y 次版本号
* Z 修订号

## 基本用法

#### 通用约束

✅ 项目初始化后，版本号为`0.1.0`;

✅ 每次修改，必须新开一个新版本;

❌ 禁止在数字前方补零。如将`1.1.1`写作`1.01.1`;

❌ 禁止留白，如将`1.1.1`写作`1. 1.1`;

❌ 标记版本号的软件发行后，禁止改变该版本软件的内容。

#### 优先级判断

**基本版本号**

由主到次，靠前的数字越大，优先级越高。

1.0.0 < 2.0.0 < 2.1.0 < 2.1.1

**复合版本号**

遵循基本版本号规定，且alpha > beta > rc

1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0。

### 🥑 X 主版本号

1. `0.Y.Z`，0开头的版本号意味着什么？
   * 项目初始化后的开发行为
   * 当前特性并不稳定，常被修改
2. `1.0.0`，什么时候使用正式版本号？
   * 软件被正式用于生产环境
   * api达到稳定标准
3. `递增`，什么时候主版本递增？
   * 完成某一重要且稳定的特性
   * 废弃某一重要的特性
   * 阶段性存档。

### 🥑 Y 次版本号

1. `0.1.0`，什么时候开始用？
   * 项目被创建后的最小版本号为0.1.0
2. `递增`，什么时候次版本号递增？
   * 新特性或新功能出现
   * 某一小特性达到稳定标准
3. `归零`，当主版本号递增时，则归零。

### 🥑 Z 修订号

1.`递增`，仅在当前特性下做了向下兼容，或者修复bug

2.`归零`，当主版本号或次版本号递增后，修订号必须归零。

### 🏃 先行版本号

范例：1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7、1.0.0-x.7.z.92。

**什么时候用先行版本号？**

* 非稳定版
* 优先级低于标准版本

**格式约束**

1. 必须为\[0-9A-Za-z-]，通过`-`号连接在版本号的尾部
2. 常见的有alpha, beta, rc三个版本

### 🏃 编译版本号

范例：1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。

**什么时候用编译版本号？**

* 当软件被新编译后，需加上编译版本号

**格式约束**

格式必须为\[0-9A-Za-z-]，用`+`号连接，补充在版本号最末尾
