

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Gitflow 策略中的分支
<a name="branches-in-a-gitflow-strategy"></a>

Gitflow 分支策略通常具有下列分支。



![\[Gitflow 分支策略中的分支和環境。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/choosing-git-branch-approach/images/gitflow-branching-strategy.png)


## 功能分支
<a name="feature-branch"></a>

`Feature` 分支是您開發功能的短期分支。`feature` 分支是透過分支離開`develop`分支來建立的。開發人員在`feature`分支中反覆執行、遞交和測試程式碼。功能完成後，開發人員會提升此功能。只有兩個路徑從特徵分支轉送：
+ 合併至`sandbox`分支
+ 在`develop`分支中建立合併請求


|  |  | 
| --- |--- |
| 命名慣例： | `feature/<story number>_<developer initials>_<descriptor>` | 
| 命名慣例範例： | `feature/123456_MS_Implement_Feature_A` | 

## 沙盒分支
<a name="sandbox-branch"></a>

`sandbox` 分支是 Gitflow 的非標準短期分支。不過，它適用於 CI/CD 管道開發。`sandbox` 分支主要用於下列目的：
+ 使用 CI/CD 管道而非手動部署來執行沙盒環境的完整部署。
+ 在較低環境中提交合併請求進行完整測試之前，開發和測試管道，例如開發或測試。

`Sandbox` 分支本質上是暫時的，並不意味著長期存在。應該在特定測試完成後將其刪除。


|  |  | 
| --- |--- |
| 命名慣例： | `sandbox/<story number>_<developer initials>_<descriptor>` | 
| 命名慣例範例： | `sandbox/123456_MS_Test_Pipeline_Deploy` | 

## 開發分支
<a name="develop-branch"></a>

`develop` 分支是長期分支，可將功能整合、建置、驗證和部署到開發環境。所有`feature`分支都會合併到`develop`分支中。合併至`develop`分支是透過需要成功建置和兩個開發人員核准的合併請求完成。若要防止刪除，請在分支上啟用`develop`分支保護。


|  |  | 
| --- |--- |
| 命名慣例： | `develop` | 

## 發行分支
<a name="release-branch"></a>

在 Gitflow 中，`release`分支是短期分支。這些分支很特別，因為您可以將它們部署到多個環境，採用建置一次、部署許多方法。 `Release`分支可以鎖定測試、預備或生產環境。在開發團隊決定將功能提升到更高的環境之後，他們會建立新的`release`分支，並使用先前版本的版本編號遞增。在每個環境的閘道上，部署需要手動核准才能繼續。 `Release`分支應該需要變更合併請求。

在`release`分支部署到生產環境之後，應該將其合併回 `develop`和 `main`分支，以確保任何錯誤修正或 Hotfix 都合併回未來的開發工作。


|  |  | 
| --- |--- |
| 命名慣例： | `release/v{major}.{minor}` | 
| 命名慣例範例： | `release/v1.0` | 

## 主要分支
<a name="main-branch"></a>

`main` 分支是長期分支，一律代表在生產環境中執行的程式碼。從發行管道成功部署後，程式碼`main`會自動從發行分支合併到分支。若要防止刪除，請在分支上啟用`main`分支保護。


|  |  | 
| --- |--- |
| 命名慣例： | `main` | 

## bugfix 分支
<a name="bugfix-branch"></a>

`bugfix` 分支是短期分支，用於修正尚未發佈至生產環境的發行分支中的問題。`bugfix` 分支應僅用於將`release`分支中的修正提升為測試、預備或生產環境。`bugfix` 分支一律從`release`分支分支分支。

測試錯誤修正之後，可以透過合併請求將其提升為`release`分支。然後，您可以遵循標準發行程序，將`release`分支向前推。


|  |  | 
| --- |--- |
| 命名慣例： | `bugfix/<ticket>_<developer initials>_<descriptor>` | 
| 命名慣例範例： | `bugfix/123456_MS_Fix_Problem_A` | 

## hotfix 分支
<a name="hotfix-branch"></a>

`hotfix` 分支是用於修正生產中問題的短期分支。它僅用於提升必須加速才能到達生產環境的修正。`hotfix` 分支一律從 分支`main`。

測試 Hotfix 之後，您可以透過將請求合併到從 建立的`release`分支，將其提升至生產環境`main`。然後，您可以遵循標準發行程序，將`release`分支向前推送以進行測試。


|  |  | 
| --- |--- |
| 命名慣例： | `hotfix/<ticket>_<developer initials>_<descriptor>` | 
| 命名慣例範例： | `hotfix/123456_MS_Fix_Problem_A` | 