GIT分支管理

總覽

Git分支管理總覽 前端

git-flow

主分支 master

  • master 爲主分支,要保護它的穩定性,隨時可用來上線。
  • 咱們不該該直接在 master 分支上直接提交代碼,而是合併其他分支。
    master

開發分支 develop

  • develop 爲開發分支,通常包含正在開發的全部新特性,用於測試環境部署和測試。
  • 咱們不該該直接在 develop 分支上直接提交代碼,也不該該把未經測試的代碼合併進來,應該儘可能保持測試環境乾淨可用。
  • Git 建立 Dev 分支的命令: git checkout -b dev masterk
  • 將 Dev 分支發佈到 Master 分支的命令: git checkout master
  • 對 Dev 分支進行合併: git merge –no–ff dev
    • 這裏稍微解釋一下,上一條命令的–no–ff 參數是什麼意思。默認狀況下,Git 執行」 快進式合併」(fast-farward merge),會直接將 Master 分支指向 Dev 分支。 使用–no–ff 參數後,會執行正常合併,在 Master 分支上生成一個新節點, 使用no-ff之後版本演變動爲清晰
      no-off

特性分支 feature

  • 分支命名: feature/ 開頭的爲特性分支,命名規則爲 feature/xxx。舉例來說,如 xxx10 月 18 日要開發一個通信錄改進的功能,能夠自建分支爲 feature/contacts_advance-ty-1018。git

  • 通常 fork 自 develop 分支,最終可能會合併到 develop 分支。測試

  • 通常 feature 分支應僅包含一個特性,上線(合併至 master)部署驗證無誤後便可刪除。記得及時將 feature 分支 push 至遠端。3d

  • 若是合併至 develop 或 master 時發如今 fork 此特性分支以後分支已合併了不少其它分支的提交,請先執行 git rebase,這樣能提交歷史更加整潔。code

  • 建立一個功能分支:orm

    git checkout -b feature/x devcdn

  • 開發完成後,將功能分支合併到 dev 分支:blog

    git checkout dev git merge –no-ff feature/x開發

  • 刪除 feature 分支:git branch -d feature/x 部署

    feature

預上線分支 release

  • 第二種是預發佈分支,它是指發佈正式版本以前(即合併到 Master 分支以前),咱們可能須要有一個預發佈的版本進行測試。預發佈分支是從 Dev 分支上面分出來的,預發佈結束之後,必須合併進 Dev 和 Master 分支。

  • 分支命名: release/ 開頭的爲預發佈分支,命名規則爲 release/(date/versionNumber) (前端版本號:主版本號. 子版本號. 修正版本號)

  • 上線後便可刪除。

  • 建立一個預發佈分支:

    git checkout -b release/v_1.2 dev

  • 確認沒有問題後,合併到 master 分支:

    git checkout master git merge –no-ff release/v_1.2

  • 對合並生成的新節點,作一個標籤: git tag -a v_1.2

  • 再合併到 dev 分支:

    git checkout dev git merge –no-ff release/v_1.2

  • 最後,刪除預發佈分支: git branch -d release/v_1.2

快速修復分支 hotfix

  • 分支命名: hotfix/ 開頭的爲修復分支,它的命名規則與 feature 分支相似。

  • 通常咱們若是發現緊急線上 bug,能夠將線上代碼臨時回滾,從最新的 master 分支創建 hotfix 分支,提交修復代碼、測試無誤後,合併至 develop 和 master。

  • 上線驗證無誤後,便可將 hotfix 分支刪除。

  • 建立一個修補 bug 分支:

    git checkout -b hotfix/0.1 master

  • 修補結束後,合併到 master 分支

    git checkout master git merge –no-ff hotfix/0.1 git tag -a 0.1.1

  • 合併到 dev 分支

    git checkout dev git merge –no-ff hotfix/0.1

  • 最後,刪除」 修補 bug 分支」:git branch -d hotfix/0.1

git tag usage

  • 添加 git tag -a V_0.1.1.0 -m"基本部署完成,有 BUG 待作"

  • 刪除 git tag -d V_0.1.1.0

  • 推送到遠程

    git push origin V_0.1.1.0 git push –tags

平常bug修復 fixbug/xxx

  • 最後一種是修補 bug 分支。軟件正式發佈之後,不免會出現 bug。這時就須要建立一個分支,進行 bug 修補。

  • 修補 bug 分支是從 Master 分支上面分出來的。修補結束之後,再合併進 Master 和 Dev 分支。它的命名,能夠採用 fixbug/xxx 的形式。

  • 建立一個修補 bug 分支:

    git checkout -b fixbug/20180926 master git push --set-upstream origin fixbug/20180926

  • 修補結束後,合併到 master 分支:

    git checkout master git merge –no-ff fixbug/20180926 git tag -a xxx

  • 再合併到 dev 分支:

    git checkout dev git merge –no-ff fixbug/20180926

  • 最後,刪除」 修補 bug 分支」:

    git branch -d fixbug-0.1

###命名分支必須遵照一些簡單的規則

  • 可使用斜槓(/) 建立一個分層的命名方法。可是,該分支名不能以斜線結尾。
  • 分支名不能以減號(-)開頭。
  • 以斜槓分割的組件不能以點(.) 開頭。如 feature/.new 這樣的分支名是無效的。
  • 分支名的任何地方都不能包含兩個連續的點(..)
  • 此外,分支名不能包含如下內容:
    • 任何空格活其餘空白字符:
    • 在 Git 中具備特殊含義的字符,包括波浪線(~)、插入符(^)、冒號、問號(?)、星號(*)、左方括號([)。——ASCII 碼控制字符,即值小於八進制 \ 040 的字符,或 DEL 字符(八進制 \ 177)。
    • 這些分支的命名規則是由 git check-ref-format 底層命令強制檢測的,它們是爲了確保每一個分支的名字不只容易輸入,並且在 git 目錄和腳步做爲一個文件名是可用的。
相關文章
相關標籤/搜索