iT邦幫忙

2024 iThome 鐵人賽

DAY 2
1
IT 管理

30天從版控到code review的實踐指南系列 第 2

Day 2. 版控流程介紹:Git Flow。

  • 分享至 

  • xImage
  •  

為什麼要做程式碼版本控管?


不管是個人開發獨立系統或是團隊合作專案,都需要將程式碼進行版本控管。Git 是目前最為廣泛使用的版本控制系統(Version Control Systems, VCS),使用 Git 的優點:

  1. 分散式的版本控制工具(Distributed Version Control Systems, DVCS):協作者各自在local端有完整程式碼副本,即便remote端出現問題,仍不受影響,可繼續在local端持續開發。
  2. 完整程式碼變更歷程與具可追溯性:能紀錄檔案各個版本的程式碼更動,易於追蹤版本差異、加速找到出錯的版本。
  3. 分支與合併功能:依功能建立各自獨立分支(branch),開發完成後合併回主分支(main),合併前可確保程式碼無衝突,才進行合併。開發團隊可以根據需求為每個功能或每個版本建立分支,並可彈性建立適用自己的工作流程,有效提高協作效率。

版控流程介紹:什麼是Git Flow?


Git Flow由五種類型的分支:Main, Develop, Feature, Hotfix, Release進行版控,有別於以主分支(master)為主,強調頻繁更新程式碼版本與快速反饋循環的 Trunk-Based Development。Git Flow 結構複雜,以不同類型的分支,代表各自的開發階段,並發展併版模式。

Git Flow 的分支類型與使用原則

  1. Main
    • 用途:紀錄專案的發佈歷程,通常是穩定且經過充分測試的版本,也可以成功運行。
    • 特點:
      • 合併時機:只有正式發佈新版本或緊急修復時,才會將其他分支合併到 Main
      • 有版本標籤:所有的發佈版本都會在 Main 分支加上版本號標籤(例如 v1.0.0),方便追蹤和管理。
  2. Develop
    • 用途:作為功能開發和整合的主要分支。在 Develop 分支,開發人員會進行新功能的開發和測試,新功能完成後,於發佈之前會先被整合在這裡。
    • 特點:
      • 合併時機:功能分支(Feature)、發佈分支(Release)和修復分支(Hotfix)開發完成後,都會先合併到 Develop 分支。
      • 不穩定性:雖然有最新的程式碼版本,但因合併其他類型的分支,具有不穩定性,需要進一步測試。
  3. Feature
    • 用途:用於新功能的開發,每個 Feature 分支都從 Develop 分支創出來,每個功能開發時會各自創一個 Feature 分支進行開發。
    • 特點:
      • 合併時機:功能完成開發後,Feature 分支會合併回 Develop 分支。
      • 生命週期:通常較短,功能完成並經過測試後,即會合併和刪除。
  4. Hotfix
    • 用途:用於處理需要立即修復 Bug,以確保系統正常運作。
    • 特點:
      • 合併時機:完成修復後,Hotfix 分支會合併到 Main 分支和 Develop 分支。
      • 生命週期:短且緊急,主要用於快速解決緊急問題。
  5. Release
    • 用途:從 Develop 分支創出來,用於準備和打包即將發佈的版本。Release 分支將在發佈版本之前進行最後的測試及錯誤修復。
    • 特點:
      • 合併時機:準備發佈時,Release 分支會合併到 Main 分支,並且打上版本號標籤。它也會合併回 Develop 分支,保持與 Develop 同步。
      • 幫助 Develop 分支可持續進行開發,且保持穩定。

Git Flow 版本合併示意圖


https://ithelp.ithome.com.tw/upload/images/20240917/201694837hlreExFfJ.png
(圖片來源:gitflow-workflow)

Git Flow 適用專案


適合用於長期維護的專案與大型專案,能夠有效管理多個開發階段與版本。

Reference



上一篇
Day 1. 簡介與摘要:從版控流程到程式碼管理。
下一篇
Day 3. 版控流程介紹:GitHub flow
系列文
30天從版控到code review的實踐指南13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言