資源描述:
《git工作流指南-gitflow工作流》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Git工作流指南:Gi廿low工作流這節(jié)介紹的Gitflow工作流借鑒自在nvie的VincentDriessenoGitflow工作流定義了一個圍繞項(xiàng)目發(fā)布的嚴(yán)格分支模型。雖然比功能分支工作流復(fù)雜幾分,但提供了用于一個健壯的用于管理大型項(xiàng)目的框架。Gitflow工作流沒有用超出功能分支工作流的概念和命令,而是為不同的分支分配一個很明確的角色,并定義分支之間如何和什么時候進(jìn)行交互。除了使用功能分支,在做準(zhǔn)備、維護(hù)和記錄發(fā)布也使用各自的分支。當(dāng)然你可以用上功能分支工作流所有的好處:PullRequests.隔離實(shí)驗(yàn)性開發(fā)和
2、更高效的協(xié)作。工作方式GitfSw工作流仍然用中央倉庫作為所有開發(fā)者的交互中心。和其它的工作流一樣,開發(fā)者在本地工作并push分支到要中央倉庫中。歷史分支相對使用僅有的一個master分支.Gitflow工作流使用2個分支來記錄項(xiàng)目的歷史。master分支存儲了正式發(fā)布的歷史,而develop分支作為功能的集成分支。這樣也方便master分支上的所有提交分配一個版本號。MailerDevelopvC.1vO-2心I——}剩下要說明的問題圍繞著這2個分支的區(qū)別展開。功能分支每個新功能位于一個自己的分支,這樣可以push到中
3、央倉庫以備份和協(xié)作。但功能分支不是從master分支上拉出新分支,而是使用develop分支作為父分支。當(dāng)新功能完成時,合并回develop分支。新功能提交應(yīng)該從不j[接與master分支交互。v0.2vO.1IMasterDevolop、…■—■一■■■■■?■■???
4、Ix/、ChqC-v1°FeatureFeature注意,從各種含義和目的上來看,功能分支加上develop分支就是功能分支工作流的用法。但Gitflow工作流沒有在這里止步。發(fā)布分支FegtureJ…O今CHOO一旦develop分支上有了做一次發(fā)布
5、(或者說快到了既定的發(fā)布日)的足夠功能,就從develop分支上fork—個發(fā)布分支。新建的分支用于開始發(fā)布循環(huán),所以從這個時間點(diǎn)開始之后新的功能不能再加到這個分支上——這個分支只應(yīng)該做Bug修復(fù)、文檔生成^其它面向發(fā)布任務(wù)。一旦對外發(fā)布的工作都完成了發(fā)布分支合并到master分支并分配一個版本號打好Tago另外,這些從新建發(fā)布分支以來的做的修改要合并回develop分支。使用一個用于發(fā)布準(zhǔn)備的專門分支,使得一個團(tuán)隊(duì)可以在完善當(dāng)前的發(fā)布版本的同時,另一個團(tuán)隊(duì)可以繼續(xù)開發(fā)下個版本的功能。這也打造定義良好的開發(fā)階段(比如,可
6、以很輕松地說,『這周我們要做準(zhǔn)備發(fā)布版本4.0』,并且在倉庫的目錄結(jié)構(gòu)中可以實(shí)際看到)。常用的分支約定:用于新建發(fā)布分支的分支:develop用于合并的分支:master刁〉支命名:release-*或release/*維護(hù)分支MasterReleaseDevelopFeatureFeatureV0.2維護(hù)分支或說是熱修復(fù)(hotfix)分支用于生成快速給產(chǎn)品發(fā)布版本(productionreleases)打補(bǔ)丁,這是唯一可以直master分支fork出來的分支。修復(fù)完成,修改應(yīng)該馬上合并回master分支和develo
7、p分支(當(dāng)前的發(fā)布分支)zmaster分支應(yīng)該用新的版本號打好Tag。為Bug修復(fù)使用專門分支,讓團(tuán)隊(duì)可以處理掉問題而不用打斷其它工作或是等待下一個發(fā)布循環(huán)。你可以把維護(hù)分支想成是一個直接在master分支上處理的臨時發(fā)布。示例下面的示例演示本工作流如何用于管理單個發(fā)布循環(huán)。假設(shè)你已經(jīng)創(chuàng)建了f中央倉庫。創(chuàng)建開發(fā)分支第_步為master分支配套一個develop分支。簡單來做可以本地倉!)建一空的develop分支,push到服務(wù)器上:gitbranchdevelopgitpush-uorigindevelop以后這個分支
8、將會包含了項(xiàng)目的全咅B(yǎng)歷史,而master分支將只包含了部分歷史。其它開發(fā)者這時應(yīng)該克隆中央倉庫,?develop分支的跟蹤分支:gitclonessh://user@host/path/to/repo.gitgitcheckout-bdeveloporigin/develop現(xiàn)在每個開發(fā)都有了這些歷史分支的本地拷貝。小紅和小明開始開發(fā)新功能30這個示例中,小紅和/」朋開始各自的功能開發(fā)。他們需要為各自的功能創(chuàng)建相應(yīng)的分支。新分支不是基于master分支,而是應(yīng)該基于develop分支:gitcheckout-bsome
9、-featuredevelop他們用老套路添加提交到各自功能分支上:編輯、暫存、提交:gitstatusgitaddgitcommit小紅完成功能開發(fā)添加了提交后,小紅覺得她的功能0K了。如果團(tuán)隊(duì)使用PullRequests,這時候可以發(fā)起一個用于合并到develop分支。否則她可以直接合并到她本地的develop分