2022-06-16 11:37:04 +08:00
|
|
|
|
---
|
2022-07-11 14:36:46 +08:00
|
|
|
|
title: 分支(Branch)
|
2023-06-26 17:37:53 +08:00
|
|
|
|
description: 分支
|
|
|
|
|
keywords:
|
2023-11-09 17:30:33 +08:00
|
|
|
|
- Git
|
|
|
|
|
- 分支
|
|
|
|
|
- 协作规范
|
2023-06-26 17:37:53 +08:00
|
|
|
|
tags:
|
2023-11-09 17:30:33 +08:00
|
|
|
|
- 软件工程/Git协作
|
2022-07-10 18:59:59 +08:00
|
|
|
|
sidebar_position: 1
|
2023-06-26 17:37:53 +08:00
|
|
|
|
author: 7Wate
|
|
|
|
|
date: 2023-06-26
|
2022-06-16 11:37:04 +08:00
|
|
|
|
---
|
|
|
|
|
|
2022-10-09 12:09:00 +08:00
|
|
|
|
![git-flow](https://static.7wate.com/img/2022/10/09/a24754d19f904.png)
|
2022-06-16 11:37:04 +08:00
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
| 分支类型 | 命名规则 | 备注 |
|
|
|
|
|
| ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
|
|
|
|
| 主分支 | `main` | |
|
|
|
|
|
| 开发分支 | `develop` | |
|
|
|
|
|
| 功能分支 | 除 `master`、`main`、`develop`、`release-*`、`hotfix-*` 以外的任何名字 | 避免使用 `master`、`main`、`develop`、`release-*`、`hotfix-*` |
|
|
|
|
|
| 预发布分支 | `release-*` | 名称中的 `*` 表示版本号或其他标识 |
|
|
|
|
|
| 热修复分支 | `hotfix-*` | 名称中的 `*` 表示版本号或其他标识 |
|
2022-07-11 14:36:46 +08:00
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
**为了防止产生歧义,我们建议避免使用简拼命名。**
|
2022-07-11 14:36:46 +08:00
|
|
|
|
|
2022-07-10 18:34:05 +08:00
|
|
|
|
## 主要分支
|
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
中央仓库中存在两个生命期无限长的主要分支:
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
- Main(主分支)
|
|
|
|
|
- Develop(开发分支)
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
主分支 `origin/main` 的 `HEAD` 指向的源码总是处于可发布的状态。另一方面,开发分支 `origin/develop` 的 `HEAD` 指向的源码应包含为下次版本发布准备的最近的一次提交。
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
当 `develop` 分支上的代码达到一个稳定点,并且准备进行发版时,所有在该分支上的修改都应该合并回 `main` 分支,并且打一个版本号标签(`tag`)。
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
|
|
|
|
## 辅助分支
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
为了协助平行开发,简化功能追踪,协助产品发布和快速修复线上版本的 bug,我们采用了功能分支、预发布分支和热修复分支。
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
|
|
|
|
- Feature branches (功能分支)
|
|
|
|
|
- Release branches (预发布分支)
|
|
|
|
|
- Hotfix branches (热修复分支)
|
|
|
|
|
|
|
|
|
|
### 功能分支
|
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
功能分支是从 `develop` 创建,必须合并回 `develop`。这些分支主要存在于开发者的本地仓库,不在远程仓库 `origin` 中。
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
|
|
|
|
### 预发布分支
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
预发布分支从 `develop` 创建,必须合并回 `develop` 和 `main`。这些分支用于准备新版本的发布,包括进行小的 bug 修复和准备发布数据。发布后,预发布分支可以删除。
|
2022-07-10 18:34:05 +08:00
|
|
|
|
|
|
|
|
|
### 热修复分支
|
|
|
|
|
|
2023-06-26 17:37:53 +08:00
|
|
|
|
热修复分支从 `main` 创建,必须合并回 `develop` 和 `main`。这些分支用于修复线上版本的严重 bug。修复完成后,热修复分支可以删除。如果当前存在预发布分支,热修复分支应该合并到预发布分支,而不是开发分支。
|