日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

git分支进阶

發(fā)布時(shí)間:2023/12/9 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git分支进阶 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

其實(shí)git除了版本控制,另外一個(gè)最突出的特點(diǎn)就是他的分支操作。簡(jiǎn)直 絲滑~.git也是多人協(xié)作的必備武器。 通常我們正常情況下只需要master 和 develop分支就夠了。 這里我們先以這兩條分支作為基準(zhǔn),進(jìn)行一系列的操作。

開發(fā)新功能流程

這個(gè)應(yīng)該屬于develop分支的所有(Master分支只管穩(wěn)定版). 第一步,應(yīng)該創(chuàng)建develop分支。

git checkout -b develop

然后拷貝主分支上的內(nèi)容

git rebase master

(  ̄3)(ε ̄ ), ok, 正常情況下,你的develop分支和master上的分支就一模一樣了。 但是有的童鞋會(huì)有疑問(wèn),特么你為什么不用merge呢?
我就不用~ 就不用~ 就不用~
(づ ̄ 3 ̄)づ , 其實(shí)使用merge和使用rebase的區(qū)別就是,(使用mege是終極合并分支,使用的是fast-forward的模式,造成兩個(gè)分支的同步,給你開發(fā)新功能造成不必要的麻煩,當(dāng)然,你可以使用. git merge --no-ff master合并,就可以啦。而你如果使用這個(gè)方式的話,會(huì)造成你圖譜git出現(xiàn)不必要的復(fù)雜度。。。而使用rebase會(huì)改變的你分支的基底~ 這樣看起來(lái)舒服一點(diǎn)。。。)
不懂誒~ ~ ~ ::>_<::
沒事,上面括號(hào)里面知識(shí)參考的,你不看根本沒關(guān)系。 如果你感 性 趣的話,可以參考英文rebase講解 | | 中文rebase講解
所以這里我就不贅述了,繼續(xù)
這時(shí)候我們就要在develop分支上開發(fā)新分支了。
現(xiàn)在假設(shè)我們已經(jīng)做了一些改動(dòng)(可能已經(jīng)過(guò)去兩天了).
這時(shí)候我們要把develop分支提交到遠(yuǎn)端,但在提交之前需要再同步一下master分支(為什么? 你猜~ 你也可以不同步,反正下次拉下來(lái)再同步的時(shí)候難受的是你自己)。接著使用:

git fetch origin master git rebase master

Ok~ 如果沒出什么conflict那么恭喜你,你已經(jīng)學(xué)會(huì)了同步分支的流程。
另外,rebase還有一個(gè)iteractive模式,其實(shí)就是用來(lái)處理在你開發(fā)時(shí)別人提交的commit 和相關(guān)的-m參數(shù). 這里我們不做要求,因?yàn)楹寐闊?#xff0c; 笨寶寶不想說(shuō) (~﹃~)~zZ。
如果感興趣的同學(xué)可以參考: 傳送門
OK,最后當(dāng)你develop分支開發(fā)完畢,這時(shí)候你需要切換到master分支上去合并。

git checkout master git merge --no-ff develop

OK,如果沒有conflict恭喜,已經(jīng)成功.
恩,說(shuō)道這里,兩個(gè)分支的開發(fā)git已經(jīng)基本完畢了。
(┬_┬),為什么兩個(gè)分支開發(fā)起來(lái)都這么復(fù)雜。
小朋友,你知道在一些團(tuán)隊(duì),他們用的是5個(gè)分支嗎?
主要分支: master,develop
輔助分支: hotfix,feature,release
這里我們來(lái)介紹一個(gè)git的語(yǔ)法糖~git flow

git flow的開發(fā)流程

這個(gè)應(yīng)該是集各種糖之大成,然你免去創(chuàng)建分支,刪除分支,切換分支,打標(biāo)簽等等各種煩惱,以及...自行g(shù)oogle
這里我只講干貨誒。
先按慣例上張圖:

這個(gè)是gitflow的鼻祖做的講解圖。 看不懂吧,我一開始也看不懂,后面寫寫的就懂了。
我先按分支說(shuō)一下他們各自的功能吧:

主要分支:

1. master: 穩(wěn)定發(fā)布版(永遠(yuǎn)隱藏) 2. develop: 持續(xù)更新版(永遠(yuǎn)工作)

輔助分支:

1.feature: 同步develop開發(fā)新功能,完成后與develop合并(merge) 2. release: 當(dāng)新功能版本開發(fā)完后,就可以使用release分支進(jìn)行創(chuàng)建分支并且合并,修完bug之后,與develop和master分支進(jìn)行合并 3. hotfix: 這個(gè)應(yīng)該算是緊急情況吧,當(dāng)線上出問(wèn)題的時(shí)候,需要馬上進(jìn)行修復(fù),然后再提交。 完成后,會(huì)與develop和master分支進(jìn)行合并.

ok , 基本上,說(shuō)了各自分支的一些基本用處。 現(xiàn)在我們來(lái)正式介入git flow這個(gè)神奇的語(yǔ)法糖。
首先,我們要安裝git-flow這個(gè)命令集合。
在MAC上,我們直接可以使用:

brew install git-flow; //安裝

在windows上,可以使用:

wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

直接復(fù)制貼到命令行就可以了。
git flow init
首先創(chuàng)建你的git 分支群,即上面說(shuō)的那幾個(gè)。 接下來(lái),zsh || bash || cmd會(huì)彈出一個(gè)對(duì)話框.

像這樣,閉著眼睛,一直點(diǎn)[Enter]就可以了。
接下來(lái)你會(huì)發(fā)現(xiàn),你初始化的時(shí)候就是處在develop分支上面的.
Ok~ 正常的話,我們就可以開始進(jìn)行功能的開發(fā)了。
使用git flow feature start [branchName]命令,建立你的功能分支, 之后你便可以創(chuàng)建一些特定功能.(他省去了,你創(chuàng)建分支,并rebase分支這一過(guò)程,超棒.~^_^~ )

git flow feature start headerBar

之后他會(huì)提示你一些信息,告訴你現(xiàn)在正在feature/headerBar分支上,然后你就可以進(jìn)行一些開發(fā)...
當(dāng)然,功能開發(fā)是一項(xiàng)長(zhǎng)久的任務(wù),以后你也需要不斷的進(jìn)行g(shù)it rebase develop進(jìn)行分支的更新,然后繼續(xù)開發(fā)。 要知道gitflow只是一個(gè)語(yǔ)法糖,原生的git命令你完全都可以用的。
所以,你還可以將新建的功能分支保存到遠(yuǎn)端.

git flow feature publish feature/[branchName] //或者使用原生的 git push origin feature/[branchName]

我傾向于用原生的...
完成開發(fā)之后一定要記著使用.git flow feature finish [branchName].
這里我們使用headerBar分支

git flow feature finish headerBar

Ok~ 它便會(huì)將你的分支與develop進(jìn)行合并,然后并且刪除該feature分支。 如果你不犯傻兩邊都改動(dòng)(develop和feature分支), 應(yīng)該不會(huì)出現(xiàn)conflict的。
滿意~ #^_^#.
現(xiàn)在你的develop分支已經(jīng)開發(fā)成熟了,想要發(fā)布一個(gè)測(cè)試版,這時(shí)候就可以使用git flow release start [tag]. 進(jìn)行發(fā)布,記著打上標(biāo)簽(版本號(hào)). 還有,要保證這個(gè)release是你當(dāng)前最穩(wěn)定的版本才行。

git flow release start v0.0.1

棒~ 現(xiàn)在,你已經(jīng)創(chuàng)建了一個(gè)release的0.0.1版。然后,你可以在release分支上進(jìn)行最后的修改。
現(xiàn)在,準(zhǔn)備工作已經(jīng)基本做完,現(xiàn)在我要正式發(fā)布啦~~
怕拉吧~ ( ⊙ _ ⊙ )一般吧
使用git flow release finish [tag]后面跟上你創(chuàng)建release的指定版本號(hào),這里我們接著使用v0.0.1

git flow release finish v0.0.1

Ok~這時(shí)候,release分支會(huì)和develop,master分支進(jìn)行合并,然后被刪除。 也就是,只有在release的時(shí)候,我們才能真正的接觸到master分支。 這也是git-flow最讓我感到震撼的, 完整的規(guī)范化,簡(jiǎn)直了~ 我愛 上它了。
還記得我們打的標(biāo)記嗎? 沒錯(cuò),他會(huì)保存在你的git倉(cāng)庫(kù)里。你可以使用git tag進(jìn)行檢查.
另外gitflow還有一個(gè)致命誘惑就是他的hotfix分支。簡(jiǎn)直啦~~~ 超級(jí)棒。
當(dāng)你的master已經(jīng)上線,但是突然出現(xiàn)一個(gè)bug的話,你可以直接在master分支上改動(dòng),但是有個(gè)問(wèn)題就是,master的分支超前了develop分支,造成你版本的混亂。 所以,這里我們可以直接使用git flow hotfix start [tagName], 其中tagName是新建的一個(gè)分支,表示完成bugfix的版本號(hào)。

git flow hotfix start v0.0.2

現(xiàn)在,我們已經(jīng)創(chuàng)建了一個(gè)分支hotfix/0.0.2, 而且他貼心的幫我們r(jià)ebase了master內(nèi)容,然后我們完成之后就可以使用git flow hotfix finish [tagName]進(jìn)行hotfix的收尾工作。

git flow hotfix finish v0.0.2

OK, 然后貼心的zsh會(huì)給你一些提示信息,說(shuō)明已經(jīng)和master,develop分支合并,完成了bug的修復(fù)。棒~
所以,現(xiàn)在大多數(shù)team的都已經(jīng)使用git-flow進(jìn)行g(shù)it的布局和管理,我們可以和如翔一般的分支管理說(shuō)拜拜啦~ 雖然說(shuō)是5大分支,但其實(shí),我們的主要存在的分支依然只有develop和master分支~ 最后我們?cè)谝黄鸹仡櫼幌?#xff0c;git-flow的工作流程:

1. 創(chuàng)建分支: git flow init 2. 進(jìn)行功能分支的開發(fā): git flow feature start [branchName] 3. 進(jìn)行功能的合并: git flow feature finish [branchName] 4. 進(jìn)行發(fā)布版的準(zhǔn)備: git flow release start [tagName] 5. 完成發(fā)布版: git flow release finish [tagName] 6. 熱插拔修復(fù)bug: git flow hotfix start [tagName] 7. 完成hotfix: git flow hotfix finish [tagName]

OK~ 現(xiàn)在git-flow我們已經(jīng)基本學(xué)會(huì)了。當(dāng)然,git原本就好到無(wú)懈可擊,加上git-flow的優(yōu)化,簡(jiǎn)直,神一般的存在。 最后再搬一句我愛的idiom:

Blessing in disguise

前端路漫漫a ~

總結(jié)

以上是生活随笔為你收集整理的git分支进阶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。