# 项目版本号

## 介绍

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

## 开始使用

版本号的基本格式约束为`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-]，用`+`号连接，补充在版本号最末尾


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kasoqian.gitbook.io/code_standard/git/version.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
