[Git] #1 Git的各種管理方法 - antqtech/KM GitHub Wiki

Git Flow

Git Flow 是一種在軟體開發中使用的分支管理模型,提供了一套清晰的版本控制流程。

以下是 Git Flow 的基本概念:

主分支(Main Branches) 主分支包括 master 和 develop 兩個主要分支。 master 分支用於存放穩定的、已經發佈的程式碼(不會直接對其進行改動,而是透過development對其發pr)。 develop 分支是用於整合開發人員的功能分支(feature branches)的主要分支。

功能分支(Feature Branches)

每當要開發新功能時,開發人員從 develop 分支上創建一個新的功能分支。 功能分支的名稱通常是該功能的描述。 完成功能開發後,將功能分支合併回 develop 分支。

維護分支(Hotfix Branches):

當需要立即修復生產環境中的嚴重錯誤時,從 master 分支上創建一個新的維護分支。 維護分支用於進行錯誤修復,修復後將其合併回 master 分支和 develop 分支。

image

GitHub flow

GitHub Flow 是一種稍微簡單一點的git管理方法

以下是 GitHub Flow 的流程

1.建立新分支:當您要開始開發新功能或修復錯誤時,從主分支(通常是 main 或 master)上創建一個新的分支。這個分支將用於進行具體的開發工作。

2.開發與提交:在新分支上進行開發工作,進行程式碼的修改、新增或刪除。在開發過程中,根據需要進行頻繁的提交(commit)。

3.提交合併請求:當功能或修復完成後,將您的分支提交合併請求(pull request)。

4.審查和討論:其他團隊成員或項目的維護人員將進行代碼審查。他們將檢查您的修改、提供建議和意見,以確保代碼的品質和一致性。

5.部署與測試:一旦合併請求經過審查並獲得批准,您的修改可以合併到主分支中。隨後,部署修改到測試環境或預產環境進行測試,以驗證修改的正確性和穩定性。

6.上線與發佈:當測試完成且修改準備好上線時,將主分支部署到正式生產環境。

7.循環迭代:基於用戶反饋和持續的需求,回到第 1 步,從主分支上創建新的分支,進行下一個功能或修復的開發。

在 GitHub Flow 中,主分支(例如 main 或 master)用於存放穩定的、已經發佈的程式碼。

所有的開發工作都在分支上進行,並通過合併請求來將修改合併回主分支,且每個分支都是可部屬的!!

image

Trunk Based Development(TBD)

TBD是一種軟體開發流程,強調在主幹分支(trunk)上進行持續集成和快速部署。

主幹分支(Trunk):

TBD 的核心理念是使用主幹分支作為主要的開發分支。主幹分支通常是版本控制系統中的主分支,如 Git 中的 master 或 main。 所有開發人員都直接在主幹分支上進行工作,而不是在長期存在的功能分支上進行開發。 主幹分支代表著穩定和可部署的程式碼,因此它應該是可靠的和可隨時部署的。

頻繁的提交和持續集成:

TBD 鼓勵開發人員頻繁地提交(commit)更改到主幹分支,這有助於確保代碼的穩定性和可測試性。 頻繁提交的目的是將修改快速集成到主幹分支,以便進行持續集成和測試。

快速部署和持續交付: TBD 的目標是實現快速部署和持續交付。通過頻繁的提交和持續集成,更改可以更快地進入生產環境,從而加快產品功能的交付速度。 持續測試和自動化是實現快速部署和持續交付的關鍵。自動化測試流程確保代碼品質,並確保主幹分支的穩定性。

版本控制和分支管理: TBD 的分支策略相對簡單,主要聚焦在主幹分支上的開發。長期存在的功能分支相對少見,並且在某些情況下可能完全避免使用。 功能分支通常是短暫的,用於解決特定的問題或開發特定功能,並且應盡早地合併回主幹分支。

文化和合作: TBD 依賴於一種高度協作和信任的文化,開發人員彼此之間進行頻繁的交流和合作。 開發團隊需要共同努力,確保代碼的品質和整體系統的穩定性。 TBD 的目標是加速軟體開發過程並改善交付速度,同時保持代碼的品質和可測試性。 但也由於他是直接在main branch上進行修改,因此要確保每一個commit都能夠成功build成功,不然就會直接對於main branch造成傷害。

image