前幾天整理了一下之前專案的開發**,當時使用了git來進行**管理。雖然本人熟悉常用的git操作,但是對分支的管理經驗非常欠缺。拿這個專案來說,在專案中有不下20個分支,每個分支間的繼承關係相當之混亂,非常不利於**的安全管理。因此,通過在網路上的學習,總結了一下關於git分支管理的策略方法,供後續回顧學習。
當然必須承認,**分支管理策略有很多種,不侷限於以下介紹。但是下面介紹的這個分支管理策略非常具有工程借鑑意義,幾乎適用於所有開發場景。
分支命名
說明主分支
master
主分支,所有提供給使用者使用的正式版本,都在這個主分支上發布
開發分支
develop
開發分支,永遠是功能最新最全的分支
功能分支
feature-*
新功能分支,某個功能點正在開發階段
發布版本
release-*
發布定期要上線的功能
修復分支
hotfix-*
修復線上**的 bug
首先,**庫應該有且僅有乙個主分支。所有提供給使用者使用的正式版本,都在這個主分支上發布。git主分支的名字,預設叫做master。它是自動建立的,版本庫初始化以後,預設就是在主分支在進行開發。團隊成員從主分支(master)獲得的都是處於可發布狀態的**。
日常開發應該在另一條分支上完成。我們把開發用的分支,叫做develop分支。開發分支(develop)應該總能夠獲得最新開發進展的**。如果想正式對外發布,就在master分支上,對develop分支進行merge。下面介紹常用的幾個命令:
# 在master分支上建立develop分支
git checkout -b develop master
# 切換到master分支
git checkout master
# 對develop分支合併到當前master分支
git merge --no-ff develop
除了常設分支以外,還有一些臨時性分支,用於應對一些特定目的的版本開發。臨時性分支主要有三種:
這三種分支都屬於臨時性需要,使用完以後,最好刪除,使得**庫的常設分支始終只有master和develop。
功能分支
feature分支是為了開發某種特定功能,從develop分支上面分出來的。開發完成後,要再併入develop。功能分支的名字,可以採用feature-***的形式命名。
# 從develop建立乙個功能分支
git checkout -b feature-x develop
# 開發完成後,將功能分支合併到develop分支:
git checkout develop
git merge --no-ff feature-x
# 刪除feature分支
預發布分支
release分支是指發布正式版本之前(即合併到master分支之前),我們可能需要有乙個預發布的版本進行測試而建立的分支。
# 建立乙個預發布分支
git checkout -b release-x develop
# 確認沒有問題後,合併到master分支
git checkout master
git merge --no-ff release-x
# 對合併生成的新節點,做乙個標籤
git tag -a 1.2
# 再合併到develop分支
git checkout develop
git merge --no-ff release-x
# 最後,刪除預發布分支
git branch -d release-x
bug修補分支
軟體正式發布以後,難免會出現bug。這時就需要建立乙個分支,進行bug修補。
修補bug分支是從master分支上面分出來的。修補結束以後,再合併進master和develop分支。它的命名,可以採用hotfix-x的形式。
# 建立乙個修補bug分支
git checkout -b hotfix-x master
# 修補結束後,合併到master分支
git checkout master
git merge --no-ff hotfix-x
git tag -a 0.1
# 再合併到develop分支
git checkout develop
git merge --no-ff hotfix-x
# 刪除"修補bug分支"
上面許多指令使用的–no-ff的意思是no-fast-farward的縮寫,使用該命令可以保持更多的版本演進的細節。如果不使用該引數,預設使用了fast-farword進行merge。兩者的區別如下圖所示:
最後分享一下整體的分支管理策略圖示:
參考:
a successful git branching model
—from vincent driessen
Git解決分支衝突及分支管理策略
解決分支衝突 通常當git無法自動合併分支時,就必須首先解決衝突後,再提交。下面咱們先建立乙個分支並切換到b1分支 修改咱們之前的hellogit.txt內容,新增一行 create a new named f1 branch 檢視該檔案的狀態,並提交至本地倉庫 然後切換至master分支 然後在m...
Git分支管理策略
如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管理軟體,分支操作實際上會生成乙份現...
Git分支管理策略
git分支管理策略 作者 阮一峰 如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管...