NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

其實git除了版本控制,另外一個最突出的特點就是他的分支操作。簡直 絲滑~.git也是多人協作的必備武器。 通常我們正常情況下只需要master 和 develop分支就夠了。 這裡我們先以這兩條分支作為基準,進行一系列的操作。

開發新功能流程

這個應該屬於develop分支的所有(Master分支只管穩定版). 第一步,應該建立develop分支。

git checkout -b develop

然後拷貝主分支上的內容

git rebase master

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

git fetch origin master
git rebase master

Ok~ 如果沒出什麼conflict那麼恭喜你,你已經學會了同步分支的流程。
另外,rebase還有一個iteractive模式,其實就是用來處理在你開發時別人提交的commit 和相關的-m引數. 這裡我們不做要求,因為好麻煩, 笨寶寶不想說 (~﹃~)~zZ。
如果感興趣的同學可以參考: 傳送門
OK,最後當你develop分支開發完畢,這時候你需要切換到master分支上去合併。

git checkout master
git merge --no-ff develop

OK,如果沒有conflict恭喜,已經成功.
恩,說道這裡,兩個分支的開發git已經基本完畢了。
(┬_┬),為什麼兩個分支開發起來都這麼複雜。
小朋友,你知道在一些團隊,他們用的是5個分支嗎?
主要分支: master,develop
輔助分支: hotfix,feature,release
這裡我們來介紹一個git的語法糖~git flow

git flow的開發流程

這個應該是集各種糖之大成,然你免去建立分支,刪除分支,切換分支,打標籤等等各種煩惱,以及…自行google
這裡我只講乾貨誒。
先按慣例上張圖:

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

主要分支:

1. master: 穩定釋出版(永遠隱藏)
2. develop: 持續更新版(永遠工作)

輔助分支:


1.feature: 同步develop開發新功能,完成後與develop合併(merge)
2. release: 當新功能版本開發完後,就可以使用release分支進行建立分支並且合併,修完bug之後,與develop和master分支進行合併
3. hotfix: 這個應該算是緊急情況吧,當線上出問題的時候,需要馬上進行修復,然後再提交。 完成後,會與develop和master分支進行合併.

ok , 基本上,說了各自分支的一些基本用處。 現在我們來正式介入git flow這個神奇的語法糖。
首先,我們要安裝git-flow這個命令集合。
在MAC上,我們直接可以使用:

brew install git-flow; //安裝

在windows上,可以使用:

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

直接複製貼到命令列就可以了。
git flow init
首先建立你的git 分支群,即上面說的那幾個。 接下來,zsh || bash || cmd會彈出一個對話方塊.

像這樣,閉著眼睛,一直點[Enter]就可以了。
接下來你會發現,你初始化的時候就是處在develop分支上面的.
Ok~ 正常的話,我們就可以開始進行功能的開發了。
使用git flow feature start [branchName]命令,建立你的功能分支, 之後你便可以建立一些特定功能.(他省去了,你建立分支,並rebase分支這一過程,超棒.~^_^~ )

git flow feature start headerBar

之後他會提示你一些資訊,告訴你現在正在feature/headerBar分支上,然後你就可以進行一些開發…
當然,功能開發是一項長久的任務,以後你也需要不斷的進行git rebase develop進行分支的更新,然後繼續開發。 要知道gitflow只是一個語法糖,原生的git命令你完全都可以用的。
所以,你還可以將新建的功能分支儲存到遠端.

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

我傾向於用原生的…
完成開發之後一定要記著使用.git flow feature finish [branchName].
這裡我們使用headerBar分支

git flow feature finish headerBar

Ok~ 它便會將你的分支與develop進行合併,然後並且刪除該feature分支。 如果你不犯傻兩邊都改動(develop和feature分支), 應該不會出現conflict的。
滿意~ #^_^#.
現在你的develop分支已經開發成熟了,想要釋出一個測試版,這時候就可以使用git flow release start [tag]. 進行釋出,記著打上標籤(版本號). 還有,要保證這個release是你當前最穩定的版本才行。

git flow release start v0.0.1

棒~ 現在,你已經建立了一個release的0.0.1版。然後,你可以在release分支上進行最後的修改。
現在,準備工作已經基本做完,現在我要正式釋出啦~~
怕拉吧~ ( ⊙ _ ⊙ )一般吧
使用git flow release finish [tag]後面跟上你建立release的指定版本號,這裡我們接著使用v0.0.1

git flow release finish v0.0.1

Ok~這時候,release分支會和develop,master分支進行合併,然後被刪除。 也就是,只有在release的時候,我們才能真正的接觸到master分支。 這也是git-flow最讓我感到震撼的, 完整的規範化,簡直了~ 我愛 上它了。
還記得我們打的標記嗎? 沒錯,他會儲存在你的git倉庫裡。你可以使用git tag進行檢查.
另外gitflow還有一個致命誘惑就是他的hotfix分支。簡直啦~~~ 超級棒。
當你的master已經上線,但是突然出現一個bug的話,你可以直接在master分支上改動,但是有個問題就是,master的分支超前了develop分支,造成你版本的混亂。 所以,這裡我們可以直接使用git flow hotfix start [tagName], 其中tagName是新建的一個分支,表示完成bugfix的版本號。

git flow hotfix start v0.0.2

現在,我們已經建立了一個分支hotfix/0.0.2, 而且他貼心的幫我們rebase了master內容,然後我們完成之後就可以使用git flow hotfix finish [tagName]進行hotfix的收尾工作。

git flow hotfix finish v0.0.2

OK, 然後貼心的zsh會給你一些提示資訊,說明已經和master,develop分支合併,完成了bug的修復。棒~
所以,現在大多數team的都已經使用git-flow進行git的佈局和管理,我們可以和如翔一般的分支管理說拜拜啦~ 雖然說是5大分支,但其實,我們的主要存在的分支依然只有develop和master分支~ 最後我們在一起回顧一下,git-flow的工作流程:

1. 建立分支: git flow init
2. 進行功能分支的開發: git flow feature start [branchName]
3. 進行功能的合併: git flow feature finish [branchName]
4. 進行釋出版的準備: git flow release start [tagName]
5. 完成釋出版: git flow release finish [tagName]
6. 熱插拔修復bug: git flow hotfix start [tagName]
7. 完成hotfix: git flow hotfix finish [tagName]

OK~ 現在git-flow我們已經基本學會了。當然,git原本就好到無懈可擊,加上git-flow的優化,簡直,神一般的存在。 最後再搬一句我愛的idiom:

Blessing in disguise

前端路漫漫a ~

相關文章

軟體開發工具 最新文章