git 分支管理實踐

git 分支管理實踐

開發流程

在這裏插入圖片描述

  1. 如圖步驟1, master對開發者只有讀權限,開發者從master拉取並新建feature_xxxx分支進行開發
  2. 如圖步驟2,開發完成後,提測時,基於feature_xxxx分支新建release_1_0_0分支,並把其它feature分支合併到release_1_0_0分支中。
  3. 如圖步驟3,release_1_0_0分支測試完成後,設置分支寫保護。發佈完成後。將release_1_0_0分支合併/覆蓋回master,並在master中創建標籤release_1_0_0

針對線上緊急問題創建hotfix

在這裏插入圖片描述
如上面所示,開發中遇到線上bug, 則基於release_1_0_0創建hotfix_1_0_0_關於xxx的修復。合併到release_1_0_0中併發布,發佈完成後要合併到master中並創建標籤[release_1_0_0_with_hotfix_關於xxx的修復]
然後,如圖中release_2_0_0已經提測,那麼就要將hotfix也合併到該分支中。如果release_2_0_0還未提測,即該分支不存在。那麼要將hotfix合併到【feature 下一迭代需求集】的至少一個分支中。即保證下一代分支中包含了該hotfix.

運維與人員管理

  1. Jenkins中拉取的每個迭代的release分支進行測試、生產環境的部署。所以每次提測,發佈,需要修改jenkins中拉取的地址。
  2. 少部分人員擁有master的管理權限,對分支進行寫保護操作的權限。在生產發佈後,要對release分支進行寫保護,並對master分支進行合併,打標籤操作。
  3. 一個迭代在測試中時,不能進行另一個新的迭代的開發,即迭代無法並行。因爲master是基於上一版本的release創建的,是新一版本的基準。
  4. 在該模式中,master扮演了當前生產運行版本與下一迭代基準版本的角色,並在其中打標籤的操作,也保證了master記錄下了整個版本歷史。如同一個備份。
  5. release_1_0_0, release_2_0_0…分支累積的過多時,可以將過久的一些加以清除。