git分支管理模型挺多的,各類概念配圖花裏胡哨,對於初學者來講,看起來會比較累,可能理解不了。git
我這裏描述一下我我的是如何作分支管理的,有更好的方式或者建議歡迎評論區交流。github
通常狀況下,各個公司都會有着不一樣的幾個環境用於各項研發工做markdown
名稱大同小異,我這裏截取幾個比較常見的環境名稱,分別對應生產,測試,開發併發
各位有幾個環境,通常能夠對應幾個常駐分支app
mastergitlab
master爲保護分支,禁止直接經過本地提交,須要經由有受權的開發人員經過公司使用的git平臺合併測試
git平臺挺多的,各位的公司確定有相關的平臺選擇,github
gitee
gitlab
gitea
等等ui
建議,beta,develop分支也由平臺發起合併操做,不要在本地進行合併提交操做。url
這樣合併的過程,必定是有受權人員知曉的spa
若是有codeReview
過程,這個合併期間就能作了
採用feature/
開頭。後面跟上對應的本項目版本號,不帶v
場景用例:
好比某平臺,咱們稱呼爲AAA平臺
,當前已發佈的線上版本爲v6.0.0
產品A
因爲某產品需求,須要對AAA平臺
進行改動,則新迭代分支由master
拉出爲feature/6.0.1
同期產品B
因爲因爲某產品需求,須要對AAA平臺
進行改動,由產品A
和B
協商
是合併在一個迭代內開發,仍是分開開發
合併在一塊兒,則使用feature/6.0.1
開發
不然,由master
從新拉出分支feature/6.0.2
進行開發
兩個分支均由master
拉出,互不干擾
採用bugfix/
開頭。後面跟上當前正在迭代的版本號,若是沒有正在迭代版本,則新增
場景用例:
好比AAA平臺
,由代碼掃描平臺掃描發現漏洞,須要緊急修復(理論上這種問題出現的頻次相對較低)
當前AAA平臺
的迭代分支爲feature/6.0.1
則從master
拉取bugfix/6.0.1
修復完成後經過合併到develop
,beta
驗後,合併到master
發佈上線
合併到master
之後,將master
合併到全部的迭代分支上,即 且feature/6.0.1
上線版本修正爲v6.0.2
均由單獨的feature
分支和bugfix
分支往master
,develop
,beta
分支合併
當master
有新的合併後,須要將master
的代碼合併到當前正在開發的迭代分支中
develop
不會往beta
和master
合併!beta
同理!
develop
不會往beta
和master
合併!beta
同理!
develop
不會往beta
和master
合併!beta
同理!
能夠視狀況而定,是否須要重建develop
和beta
分支
這裏須要說明一下
爲何要把feature
下的分支單獨往master
分支合併發佈
而不是feature
->develop
->beta
->master
這樣依次合併
假設存在多個迭代同時進行,但不是同時發版。
這裏我用三個字母表明多個迭代a
,b
,c
他們的發版時間,分別某月1日,同月2日,同月3日。
假設在上個月30日,abc均完成迭代,發佈到了beta
環境。
那麼在1日發版時,beta
分支上存在b
和c
的代碼,沒法剝離開來單獨發版。
所以咱們毫不能採用feature/
合併到develop
,develop
合併到beta
,beta
合併到master
這種方式來發版
引入自動化平臺,可用平臺挺多的,jenkins
spug
等等
master
分支進行發佈release
,生成tag
填寫版本好,帶v可能存在某些業務,又一個主幹產品
同時有些客戶要求定製化
這些定製化之後的需求,實際上就偏離了主幹產品了
針對這種類型的產品,經過fork
的方式拉出單獨倉庫,按照上述方式進行分支管理
由於經過fork
方式,定製項目與主幹項目存在關聯性
能夠經過合併的方式,將主幹的某些內容合併到定製項目上
對於這類項目的發佈,均由自動化平臺的單獨業務job發佈