無(wú)規(guī)矩不成方圓,但是規(guī)矩太多了,則感覺(jué)到束縛。我們一個(gè)人工作的時(shí)候喜歡無(wú)拘無(wú)束,想怎么干就怎么干,沒(méi)有人評(píng)判,沒(méi)有人檢驗(yàn)。時(shí)間久了就會(huì)盲目自大,以為增刪改查熟悉業(yè)務(wù)就能夠搞定一些。但是當(dāng)項(xiàng)目逐漸擴(kuò)大,原來(lái)的靈活逐漸變成了混亂,原來(lái)的快速迭代因?yàn)檫^(guò)于隨意的代碼,而開(kāi)發(fā)進(jìn)度遲遲不前。掌握一種規(guī)范,便在處理類(lèi)似問(wèn)題的時(shí)候有章可循,也能夠快速的融入一個(gè)團(tuán)隊(duì)。另外所謂規(guī)范,可以說(shuō)是比較好的實(shí)踐,按照規(guī)范來(lái),項(xiàng)目也能穩(wěn)健的發(fā)展。
【資料圖】
Git Flow 就是如何使用git 分支的一種規(guī)范,或者叫做推薦。
根據(jù)Git Flow 的推薦,我們要將Git 的分支分為 master
、develop
、hotfix
、release
、feature
這五個(gè)分支。各種分支分別負(fù)責(zé)不同的功能,平時(shí)開(kāi)發(fā)的時(shí)候各司其職,因此會(huì)有比較小的沖突率。那么可以用這些減少?zèng)_突的時(shí)間,少加會(huì)班,多有點(diǎn)自己的生活豈不快哉。一圖勝千言:
master 分支主要方穩(wěn)定、隨時(shí)可上線的版本。這個(gè)分支只能從別的分支上合并過(guò)來(lái),一般來(lái)講,從develop 上合并,或者從bugfix 分支上合并過(guò)來(lái)。不能直接在master 分支上進(jìn)行commit文件。因?yàn)槭欠€(wěn)定的版本,所以每次版本發(fā)布都要在這個(gè)分支上添加標(biāo)簽
(tag)。
develop 分支是所有開(kāi)發(fā)分支的母體,所有的開(kāi)發(fā)分支都要從develop上切出來(lái),開(kāi)發(fā)完成之后最后都要合并到develop上。
hotfix 分支用來(lái)修復(fù)生產(chǎn)中的緊急bug,由于develop分支尚處于開(kāi)發(fā)過(guò)程中,代碼不穩(wěn)定,不能直接應(yīng)用于生產(chǎn)。所以從master分支上切出一個(gè)分支,修復(fù)完成之后合并到master分支,并且合并到develop上。
release 分支可以稱(chēng)之為預(yù)發(fā)布的版本。當(dāng)我們認(rèn)為develop版本的代碼已經(jīng)趨于成熟,我們可以打一個(gè)release分支。在release 分支上測(cè)試完成之后,要將代碼合并到master分支和develop上。master 分支是線上版本,而合并到develop版本是因?yàn)?,在測(cè)試過(guò)程中,一些細(xì)節(jié)的東西可能會(huì)修改,因此這些優(yōu)化的內(nèi)容也應(yīng)該合并到最終版本以及開(kāi)發(fā)版本中。
feature 分支是最經(jīng)常使用的分支了。當(dāng)我們收到一個(gè)新的開(kāi)發(fā)功能時(shí),應(yīng)該在develop分支上切出一個(gè)feature分支。用來(lái)完成新功能的開(kāi)發(fā),開(kāi)發(fā)完成之后,要合并進(jìn)develop分支上。
基本上各種git的客戶(hù)端軟件都會(huì)支持Git Flow 工作模型。sourcetree 上使用git flow 工作模型就很流暢,體驗(yàn)很好。但是為了全平臺(tái)上通用,以及理解原理,快速上手。我們來(lái)學(xué)習(xí)下Git Flow 的命令行操作。
git flow 是一種git的使用規(guī)范,當(dāng)然也有相應(yīng)的工具集,命令行命令讓我們使用。
安裝git flow
brew install git-flow-avh
初始化git flow 工具庫(kù)
git flow init之后都按照默認(rèn)的去配置,直接按enter鍵繼續(xù)。
增加feature新特性分支
適用場(chǎng)景,需要開(kāi)發(fā)新功能
git flow feature start your roverliang/addlist
示例:
roverliang$ git flow feature start roverliang/addlistSwitched to a new branch "feature/roverliang/addlist"Summary of actions:- A new branch "feature/roverliang/addlist" was created, based on "develop"- You are now on branch "feature/roverliang/addlist"Now, start committing on your feature. When done, use: git flow feature finish roverliang/addlistroverliang$ git branch develop* feature/roverliang/addlist master
完成新特性這個(gè)動(dòng)作執(zhí)行的是下面的流程:
合并 addlist 分支到 develop刪除這個(gè)新特性分支切換回 develop 分支git flow feature finish roverliang/addlist
示例:
roverliang$ git flow feature finish roverliang/addlistSwitched to branch "develop"Your branch is up to date with "origin/develop".Already up to date.Deleted branch feature/roverliang/addlist (was 2e1b475).Summary of actions:- The feature branch "feature/roverliang/addlist" was merged into "develop"- Feature branch "feature/roverliang/addlist" has been locally deleted- You are now on branch "develop"roverliang$ git branch* develop masterroverliang$
獲取一個(gè)發(fā)布的新特性的分支
git flow feature track origin MYFEATURE
準(zhǔn)備release 版本
git flow release start RELEASE [BASE]你可以選擇提供一個(gè) [BASE]參數(shù),即提交記錄的 sha-1 hash 值,來(lái)開(kāi)啟動(dòng) release 分支. 這個(gè)提交記錄的 sha-1 hash 值必須是"develop" 分支下的。
示例:
roverliang$ git branch develop feature/test* masterroverliang$ git log --pretty=oneline -32e1b475f9825275aefa0892cfe5259aaac9a3483 (HEAD -> master, origin/test2, origin/master, origin/feature/test, origin/develop, feature/test, develop) delte some content2d22f306d2dca363b8aaa05743be342a505aabb0 renamed: demo.txt -> test.txtfbf025e210952c3cdb10e219c4ee5f82b9f36327 modified: demo.txtroverliang$
發(fā)布release 版本
git flow release track RELEASE
完成release 版本
相當(dāng)于執(zhí)行以下幾個(gè)動(dòng)作:
歸并 release 分支到 "master" 分支用 release 分支名打 Tag歸并 release 分支到 "develop"移除 release 分支git flow release finish RELEASE
緊急修復(fù)的需求:
緊急修復(fù)來(lái)自這樣的需求:生產(chǎn)環(huán)境的版本處于一個(gè)不預(yù)期狀態(tài),需要立即修正。有可能是需要修正 master 分支上某個(gè) TAG 標(biāo)記的生產(chǎn)版本。開(kāi)始緊急修復(fù),開(kāi)啟hotfix 分支
git flow hotfix start VERSION [BASENAME]VERSION 參數(shù)標(biāo)記著修正版本。你可以從 [BASENAME]開(kāi)始,[BASENAME]為finish release時(shí)填寫(xiě)的版本號(hào)
完成緊急修復(fù)
當(dāng)完成緊急修復(fù)分支,代碼歸并回 develop 和 master 分支。相應(yīng)地,master 分支打上修正版本的 TAG。
git flow hotfix finish VERSION
標(biāo)簽:
無(wú)規(guī)矩不成方圓,但是規(guī)矩太多了,則感覺(jué)到束縛。我們一個(gè)人工作的...
1、“因石立意”,即在只有一塊或幾塊石頭的情況下,根據(jù)已有的石頭...
1、HopoHoppe都是好博不是一家首先,德國(guó)進(jìn)口HOPPE好博五金件和國(guó)產(chǎn)...
1、我總是將喝過(guò)的瓶子或用過(guò)的袋子加以利用。2、例如將喝過(guò)的易拉...
阿根廷國(guó)家隊(duì)關(guān)于中國(guó)行聲明一些二手交易平臺(tái)和社交網(wǎng)絡(luò),已有人在...
2023瀏陽(yáng)周末焰火秀放票時(shí)間答:每周視實(shí)際情況開(kāi)放門(mén)票數(shù)量,將于...
開(kāi)源證券發(fā)布研究報(bào)告稱(chēng),2022年重卡領(lǐng)域新能源滲透率為3 77%,處...
1、安徽省水利水電勘測(cè)設(shè)計(jì)研究總院有限公司勘測(cè)分院于2012年08月03...
1、48v電動(dòng)車(chē)可以行駛30公里左右,60v電動(dòng)車(chē)可以行駛50公里左右,72...
2023年3月13日,安徽黃山休寧縣,茶農(nóng)在有機(jī)茶園采摘春茶。春回大地...
每經(jīng)AI快訊,3月13日,北上資金凈買(mǎi)入的個(gè)股共有985只,北上資金加...
1、面板奶量。2、就是純看站街智力。3、前10的分別是大幽魂上衣、逆...
1、干股:干股是指未出資而獲得的股份,但其實(shí)干股并不是指真正的股...
石家莊2023年消費(fèi)促進(jìn)月暨國(guó)韻文化藝術(shù)節(jié)—花朝節(jié)系列活動(dòng),本周末繼續(xù)。
1、腎上腺素是神經(jīng)和激素的遞質(zhì),是搶救和心肺復(fù)蘇時(shí)用于刺激心臟的...
交易商品牌 產(chǎn)地交貨地最新報(bào)價(jià)甲基丙烯酸叔丁酯 含量:99 8%,...
1、你好,我是中國(guó)民航大學(xué)的學(xué)生。2、雖然不是航空工程專(zhuān)業(yè)的,但...
編者按:在直播帶貨的概念融入基金產(chǎn)品銷(xiāo)售后,基金電商部門(mén)強(qiáng)勢(shì)崛...
1、《春蝶》是由白狼作詞,白狼作曲,葉蝶(五歲時(shí))演唱的歌曲。2...
報(bào)道稱(chēng),在經(jīng)歷了2022年3%的增長(zhǎng)之后,政府工作報(bào)告中預(yù)測(cè)的反彈,...
3月12日04:00,法甲第27輪,巴黎圣日耳曼客場(chǎng)2-1戰(zhàn)勝布雷斯特。第3...
康義還提到,今年要組織開(kāi)展全國(guó)的第五次經(jīng)濟(jì)普查
Windowsmediaplayer無(wú)法播放該文件:1 媒體播放器可能不支持該文件...
1、這個(gè)游戲更多的是中國(guó)古典故事聊齋的內(nèi)容,游戲這東西真沒(méi)法說(shuō)好...
1、愛(ài)虛榮就是愛(ài)就是喜歡,渴望就是羨慕,虛榮是本身不存在的好東西...
1、選中你的數(shù)據(jù)-點(diǎn)開(kāi)始選項(xiàng)卡--編輯組--格式--條件格式或者。2、點(diǎn)...
1、相信很多朋友都被如何讓鼻子變好看,困擾,但是不知道怎么解決。...
連云港“與雷鋒車(chē)同行”公益凈灘系列活動(dòng)啟動(dòng)
大眾網(wǎng)·海報(bào)新聞?dòng)浾吒]永瀚濟(jì)南報(bào)道為確保全國(guó)兩會(huì)期間安全生產(chǎn)形...
1、無(wú)錫美容美發(fā)化妝培訓(xùn)學(xué)校艾尼斯國(guó)際服務(wù)于國(guó)內(nèi)美發(fā)化妝教育領(lǐng)域...
廣告
X 關(guān)閉
廣告
X 關(guān)閉