git master主分支_Git分支管理策略及简单操作
前幾天整理了一下之前項目的開發代碼,當時使用了Git來進行代碼版本管理。雖然本人熟悉常用的Git操作,但是對分支的管理經驗非常欠缺。拿這個項目來說,在項目中有不下20個分支,每個分支間的繼承關系相當之混亂,非常不利于代碼的安全管理。因此,通過在網絡上的學習,總結了一下關于Git分支管理的策略方法,供后續回顧學習。當然必須承認,代碼分支管理策略有很多種,不局限于以下介紹。但是下面介紹的這個分支管理策略非常具有工程借鑒意義,幾乎適用于所有開發場景。
▍命名規范
▍主分支master
首先,代碼庫應該有且僅有一個主分支。所有提供給用戶使用的正式版本,都在這個主分支上發布。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▍臨時分支
除了常設分支以外,還有一些臨時性分支,用于應對一些特定場景開發。臨時性分支主要有三種:
功能(feature)分支
預發布(release)分支
修補bug(hotfix)分支
這三種分支都屬于臨時性需要,使用完以后,最好刪除,使得代碼庫的常設分支始終只有master和develop。
Feature分支
feature分支是為了開發某種特定功能,從develop分支上面分出來的。開發完成后,要再并入develop。該分支可以采用feature-xxx的形式命名。簡要步驟如下:
# 從develop創建一個功能分支git?checkout?-b?feature-x?develop# 開發完成后,將功能分支合并到develop分支:git checkout developgit?merge?--no-ff?feature-x# 刪除feature分支git branch -d feature-xRelease分支
release分支是指發布正式版本之前(即合并到master分支之前),我們可能需要有一個預發布的版本進行測試而從develop創建的分支。預發布結束以后,須合并進develop和master分支。它的命名,可以采用release-xxx的形式。
# 創建一個預發布分支git?checkout?-b?release-x?develop# 確認沒有問題后,合并到master分支git checkout mastergit?merge?--no-ff?release-x# 對合并生成的新節點,做一個標簽git?tag?-a?1.2# 再合并到develop分支git checkout developgit?merge?--no-ff?release-x# 最后,刪除預發布分支git branch -d release-xHotfix分支
軟件正式發布以后,難免會出現bug。這時就需要創建一個分支,進行bug修補。修補bug分支是從Master分支上面分出來的。修補結束以后,再合并進master和develop分支。它的命名,可以采用hotfix-xxx的形式。# 創建一個修補bug分支git?checkout?-b?hotfix-x?master# 修補結束后,合并到master分支git checkout mastergit merge --no-ff hotfix-xgit?tag?-a?0.1# 再合并到develop分支git checkout developgit?merge?--no-ff?hotfix-x# 刪除"修補bug分支"git branch -d hotfix-x▍總結
上面許多指令使用的--no-ff的意思是no-fast-farward的縮寫,使用該命令可以保持更多的版本演進的細節。如果不使用該參數,默認使用了fast-farword進行merge。兩者的區別如下圖所示:最后分享一下整體的分支管理策略圖示:公眾號回復git獲取「分支管理策略圖」
參考資料
https://nvie.com/posts/a-successful-git-branching-model
總結
以上是生活随笔為你收集整理的git master主分支_Git分支管理策略及简单操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言goto语句用法_C语言32个关键
- 下一篇: Linux九大哲学原理,Linux/Un