@
GitHub是近年來興起的版本控制和協作開發網站,每一位開發者都應該熟悉GitHub的常規使用。本文以圖例和實際開發流程來講解什么是分支策略以及分支的作用,以及經典的GitFlow工作流
一、什么是分支策略
在團隊開發中,一個項目的發布版本通常使用master分支
,這也是一個項目最基本的和不可或缺的分支,當一個項目很小,代碼量不多的情況下,團隊成員可以只對master分支進行修改操作,並提交修改后的代碼。
但我們假設項目上線后,我們需要增加新的模塊,這時候去修改master分支
的代碼顯然不合適,因為master分支的代碼應該是安全的和經過測試的,所以這時我們需要有develop分支。develop分支是開發時使用的分支,我們檢出develop分支
用以修改代碼,修改完了之后,將develop分支和master分支合並,即可將修改的代碼同步至master分支,這時的master分支才是穩定的。一個GitHub項目中至少有master分支
和develop分支
,這是最簡單的分支策略。
二、分支功能介紹
-
master分支
,即主分支。任何項目都必須有個這個分支。對項目進行tag或發布版本等操作,都必須在該分支上進行。 -
develop分支
,即開發分支,從master分支上檢出。團隊成員一般不會直接更改該分支,而是分別從該分支檢出自己的feature分支,開發完成后將feature分支上的改動merge回develop分支。同時release分支由此分支檢出。 -
release分支
,即發布分支,從develop分支上檢出。該分支用作發版前的測試,可進行簡單的bug修復。如果bug修復比較復雜,可merge回develop分支后由其他分支進行bug修復。此分支測試完成后,需要同時merge到master和develop分支上。 -
feature分支
,即功能分支,從develop分支上檢出。團隊成員中每個人都維護一個自己的feature分支,並進行開發工作,開發完成后將此分支merge回develop分支。此分支一般用來開發新功能或進行項目維護等。 -
fix分支
,即補丁分支,由develop分支檢出,用作bug修復,bug修復完成需merge回develop分支,並將其刪除。所以該分支屬於臨時性分支。 -
hotfix分支
,即熱補丁分支。和fix分支的區別在於,該分支由master分支檢出,進行線上版本的bug修復,修復完成后merge回master分支,並merge到develop分支上,merge完成后也可以將其刪除,也屬於臨時性分支。 -
三、經典的工作流
- 1、創建項目,添加協助者,詳見Github如何增加協助者
- 2、克隆項目
git clone https://github.com/pbrong/GitHubTest.git
此時,在文件中出現已經克隆出來的倉庫
- 3、從
master分支
上檢出develop分支
,此時develop分支和master分支是完全一樣的,我們查看文件發現沒有變化,其實此時的文件就是develop分支
中的文件
git checkout -b develop
- 4、修改
develop分支
的文件,例如我要增加一個查詢商品模塊AddItem.java
模擬數次的add
和commit
- 5、切換到
master分支
git checkout master
經過數次修改,確認代碼無誤后切換回master分支
,此時的文件結構中並不含有AddItem.java
,說明這數次修改都是在develop分支
進行的,master分支
還是我們一開始的代碼.
- 6、分支合並
git merge --no-ff develop
即可看到,master分支
出現了AddItem.java
文件,說明分支合並成功,此時master分支
的代碼是經develop分支
測試過的,安全可靠的
- 7、提交
master分支
至版本庫中
四、同步分支數據
克隆和某一倉庫后,會出現只有master分支
而沒有develop分支
的情況,這時只需要在master分支
的基礎上檢出develop分支
,然后請求同步即可
git checkout -b develop
git pull origin develop
參考文章
1、https://www.cnblogs.com/wawahaha/p/5171187.html
2、http://www.cnblogs.com/videring/articles/6962005.html
3、https://www.cnblogs.com/yhaing/p/8473746.html
4、https://jingyan.baidu.com/article/948f5924f43f47d80ff5f9f9.html