(13) Git 練功坊- git flow 團隊合作流程

什麼是 git flow

Git Flow 是一個 Git 分支管理模型,由 Vincent Driessen 在 2010 年提出,旨在使軟體開發過程中的分支管理更加有條理和高效。這個模型適合較為複雜、長期的軟體開發專案,尤其是涉及多個開發人員和版本發佈的情況。

Git Flow 主要有五種分支類型,每個分支都有明確的用途:

  1. Master 分支:

master 分支始終代表著已經發佈的穩定版本。只有從 develop 分支合併來的代碼經過測試並準備好發佈時,才會進入 master 分支。

  1. Develop 分支:

develop 分支用來整合所有開發分支,並作為下一個版本的基礎。所有新功能和改進都是先合併到 develop 分支。

  1. Feature 分支:

feature 分支用於開發新功能。每個新功能都有自己獨立的 feature 分支,這些分支都是從 develop 分支創建,並最終合併回 develop 分支。分支命名通常為 feature/<feature-name>

  1. Release 分支:

當 develop 分支準備好進行新版本發佈時,會創建一個 release 分支。這個分支用於最後的測試和修正,在確認無誤後,會合併到 master 和 develop 分支,並打上版本標籤。

  1. Hotfix 分支:

當在 master 分支上發現嚴重問題時,會從 master 分支創建一個 hotfix 分支來進行修復。修復完成後,這個分支會合併回 master 和 develop 分支。

Git Flow 的基本流程

創建一個新的 feature 分支:

從 develop 分支創建一個新的 feature 分支:

1
2
git checkout develop
git checkout -b feature/feature-name

開發完成後,將 feature 分支合併回 develop 分支:

1
2
3
git checkout develop
git merge --no-ff feature/feature-name
git branch -d feature/feature-name

創建一個 release 分支:

從 develop 分支創建一個 release 分支:

1
2
git checkout develop
git checkout -b release/1.0.0

進行測試與修正,然後合併回 master 和 develop:

1
2
3
4
5
6
git checkout master
git merge --no-ff release/1.0.0
git tag -a 1.0.0
git checkout develop
git merge --no-ff release/1.0.0
git branch -d release/1.0.0

創建一個 hotfix 分支:

從 master 分支創建一個 hotfix 分支來修復問題:

1
2
git checkout master
git checkout -b hotfix/1.0.1

修復完成後,合併回 master 和 develop:

1
2
3
4
5
6
git checkout master
git merge --no-ff hotfix/1.0.1
git tag -a 1.0.1
git checkout develop
git merge --no-ff hotfix/1.0.1
git branch -d hotfix/1.0.1