Git版本管理總有問(wèn)題,建議使用Git Flow
Git 是用于 Linux內(nèi)核開(kāi)發(fā)的版本控制工具。與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫(kù)的方式,不必服務(wù)器端軟件支持,使源代碼的發(fā)布和交流極其方便。
當(dāng)前各大公司對(duì)軟件源碼的版本管理都采用git來(lái)管理,因此git的使用必不可少,在一些項(xiàng)目開(kāi)發(fā)中,可能存在git使用流程的不合理,導(dǎo)致代碼版本管理混亂,容易造成代碼沖突,甚至帶來(lái)線上bug等,因此一旦當(dāng)我們的項(xiàng)目在git管理后仍然存在很多問(wèn)題的時(shí)候,就可以考慮采用git flow的標(biāo)準(zhǔn)流程。
什么是git flow
Git Flow 其實(shí)是一種規(guī)范化分支管理模型的方案。他的出現(xiàn)是在Vincent Driessen 曾經(jīng)寫(xiě)過(guò)一篇博文,題為“A successful Git branching model”。
我們先來(lái)看一下Vincent Driessen提出的git flow流程圖
上圖中,有幾個(gè)分支,他們的作用如下:
- master 分支:用于生產(chǎn)環(huán)境的分支,這個(gè)分支只能從其他分支合并代碼,不允許直接修改。
- hotfix 分支:當(dāng)生產(chǎn)環(huán)境發(fā)現(xiàn)線上的 bug 的時(shí)候,則需要?jiǎng)?chuàng)建一個(gè) hotfix,修復(fù)bug完成 后,將hitfix分支合并回 master 和 develop 分支。
- release 分支:用于測(cè)試環(huán)境分支,當(dāng)develop 分支完成后,則將develop合并到 release 分支提測(cè)。測(cè)試中的 bug ,在release分支修復(fù),bug修復(fù)通過(guò)后,再合并release分支到 master 和 develop 分支。
- develop 分支:開(kāi)發(fā)環(huán)境分支,用于拉出一個(gè)一個(gè) feture 分支進(jìn)行新功能開(kāi)發(fā)。
- feature 分支:該分支主要是用來(lái)開(kāi)發(fā)一個(gè)新的功能,一般從 develop 分支拉取,開(kāi)發(fā)完成合并到 develop。
那么git flow怎么使用呢?
git flow中master 和 develop 分支是長(zhǎng)期存在的分支,都需要保證穩(wěn)定性。
如果有新功能需要開(kāi)發(fā),則基于 develop 拉取 feature 分支進(jìn)行開(kāi)發(fā),開(kāi)發(fā)完成后,合并到 develop 分支,并刪除 feature 分支。
功能開(kāi)發(fā)完成后,進(jìn)行提測(cè),基于 develop 分支拉去 release 進(jìn)行提測(cè)。如果提測(cè)中發(fā)現(xiàn)的 bug,在 release 分支進(jìn)行修復(fù),測(cè)試通過(guò)后,將 release 分支合并到 develop 分支和 master 分支。
最后在 master 分支上打標(biāo)簽用于發(fā)布,并刪除 release 分支。若后續(xù)線上發(fā)現(xiàn) bug,則基于 master 拉取 hotfix 分支,問(wèn)題在 hotfix 分支上修復(fù)完成后,將 hotfix 分支合并到 master 分支和 develop 分支。
git flow工具
由于上述過(guò)程非常標(biāo)準(zhǔn),同時(shí)又有一定的繁瑣,如果團(tuán)隊(duì)成員都非常遵守約定,可以做一些調(diào)整和簡(jiǎn)化;如果有些團(tuán)隊(duì)成員約定性不是很強(qiáng),我們可以采用git flow工具來(lái)強(qiáng)制項(xiàng)目使用git flow標(biāo)準(zhǔn)流程。
git flow工具:http://danielkummer.github.io/git-flow-cheatsheet/
大家可以按照官網(wǎng)地址進(jìn)行操作,與git 無(wú)異,本文只做簡(jiǎn)單介紹,git flow中的命令如下圖



命令匯總?cè)缦拢?/p>

最后,適合的才是最好的,不要任何時(shí)候都直接采用git flow,畢竟流程還是相對(duì)復(fù)雜一些的。