1. 程式人生 > >Git 建立分支流程介紹

Git 建立分支流程介紹

為什麼要有分支

建立分支的原因是 git 因為是分散式的,所以其核心就是分支,分支的意義在於,可以將專案程式碼按照功能、模組拆分成不同的分支。比如這個產品要加一個支付功能和一個登陸功能,可以建立兩個分支,交給不同的開發人員並行開發。登陸功能先開發完,測試無誤後合併改分支到 master 分支,master 分支部署上線。支付功能雖然沒有開發完成,但是在另一條分支上,所以產品上線和功能開發完全不受影響。這才是分散式開發的高效模式。還有這樣,以自己名字建立一個分支比如 xiancai,這個分支是已經做好的功能,隨時可以合併到 master 上線,開發的時候,建立一個帶功能字首的分支,比如 xiancai-ninghao 、xiancai-ninghao 等等,開發完之後在合併到 xiancai,每次上線,把 xiancai 合併到 master 。總之分支的做重要的意義就是提高效率!!! 這樣方便團隊開發,並且不會導致混亂。
分支有如下幾條:

  1. Master 主分支
  2. Develop 分支
  3. Feature 功能分支
  4. Release 預釋出分支
  5. Hotfix(或者Fixbug) 分支

以上各分支之間的邏輯關係見下圖;

其中對於 Feature 功能分支有;

  • 從哪個分支分離開來:develop
  • 必須要合併到哪個分支上:develop
  • 分支的命名規範:除了 master,develop,release-,或者 hotfix- 以外的名字都可以比如可以用 feature-*的方式命名。

其中對於 Release 預釋出分支有;

  • 從哪個分支分離開來: develop
  • 必須要合併到哪個分支上:develop 與 master
  • 分支的命名規範: release-*

其中對於 Hotfix(或者 Fixbug) 分支有;

  • 從哪個分支分離開來:master
  • 必須要合併到哪個分支上:develop 與 master
  • 分支的命名規範:hotfix-* 或者 fixbug-*

主分支

Master 主分支

首先,程式碼庫應該有一個、且僅有一個主分支。所有提供給使用者使用的正式版本,都在這個主分支上釋出。Git 主分支的名字,預設叫做 Master。它是自動建立的,版本庫初始化以後,預設就是在主分支在進行開發。

 

Develop 分支

主分支只用來分佈重大版本,日常開發應該在另一條分支上完成。我們把開發用的分支,叫做 Develop。

 

建立分支

git branch develop              #只建立分支
git checkout develop  #建立並切換到 develop 分支

合併分支

git checkout master         #切換到主分支
git merge --no-ff develop   #把 develop 合併到 master 分支,no-ff 選項的作用是保留原分支記錄
git branch -d develop       #刪除 develop 分支       

這裡稍微解釋一下,上一條命令的--no-ff引數是什麼意思。預設情況下,Git執行"快進式合併"(fast-farward merge),會直接將Master分支指向Develop分支。

 

次分支

除了 master 與 develop 這兩個主分支,在開發時還可以建立一些次分支,目的是讓團隊不同的成員之間可以平行開發,更容易跟蹤功能,準備為生產的發行版,快速修復生產上的問題等等。這些分支生命週期有限,可以在用完以後刪掉他們。

Feature 功能分支

Feature(功能) 分支,有時候也叫 Topic 分支。在這種分支上去開發新的功能。當開發功能的時候,這個功能屬於哪個目標發行還不知道。功能如果一直在開發,對應的這個功能分支就可以一直存在,不過到最後還是要合併到 develop 分支上,或者如果不想要開發的這個功能了,可以直接扔掉它。

 

功能名字的命名已經在上文中有提到。
建立一個功能分支:

git checkout -b feature-x develop

開發完成後,將功能分支合併到develop分支:

git checkout develop        
git merge --no-ff feature-x    

刪除feature分支:
git branch -d feature-x## Release 預釋出分支

它是指釋出正式版本之前(即合併到Master分支之前),我們可能需要有一個預釋出的版本進行測試。預釋出分支是從Develop分支上面分出來的,預釋出結束以後,必須合併進Develop和Master分支。它的命名,可以採用release-*的形式。
建立一個預釋出分支:

git checkout -b release-1.2 develop  

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

git checkout master          
git merge --no-ff release-1.2    
#對合並生成的新節點,做一個標籤    
git tag -a 1.2    

再合併到develop分支:

git checkout develop   
git merge --no-ff release-1.2    

最後,刪除預釋出分支:

git branch -d release-1.2     

Fixbug 修補bug分支

最後一種是修補bug分支。軟體正式釋出以後,難免會出現bug。這時就需要建立一個分支,進行bug修補。 修補bug分支是從Master分支上面分出來的。修補結束以後,再合併進Master和Develop分支。它的命名,可以採用fixbug-*的形式。
建立一個修補bug分支:

git checkout -b fixbug-0.1 master    

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

git checkout master    
git merge --no-ff fixbug-0.1   
git tag -a 0.1.1    

再合併到develop分支:

git checkout develop     
git merge --no-ff fixbug-0.1    

最後,刪除"修補bug分支":

git branch -d fixbug-0.1



作者:程鹹菜
連結:https://www.jianshu.com/p/7c30a4ff061c
來源:簡書