git-flow 工作流程

1.git-flow 說明

一旦安裝安裝 git-flow,你將會(huì)擁有一些擴(kuò)展命令。這些命令會(huì)在一個(gè)預(yù)定義的順序下自動(dòng)執(zhí)行多個(gè)操作。

git-flow 并不是要替代 Git,它僅僅是非常聰明有效地把標(biāo)準(zhǔn)的 Git 命令用腳本組合了起來。

git-flow把分支劃分了幾個(gè)類別

Master

就是平時(shí)我們看到的master,項(xiàng)目的主要分支,可以把它理解成 穩(wěn)定無bug發(fā)布版 。(任何時(shí)候都ready to deploy)
所以,git-flow 要求我們不能在master下做開發(fā)。

Develop

處于功能開發(fā)最前線的版本,查看develop分支就能知道下一個(gè)發(fā)布版有哪些功能了。
develop一開始是從master里分出來的,并且定期會(huì)合并到master里,
每一次合并到master,表示我們完成了一個(gè)階段的開發(fā),產(chǎn)生一個(gè)穩(wěn)定版。
同樣的,develop下也不建議直接開發(fā)代碼,develop代表的是已經(jīng)開發(fā)好的功能

Feature

feature的作用是為每一個(gè)新功能從develop里創(chuàng)建出來的一個(gè)分支。
例如A和B分別做兩個(gè)功能,一個(gè)為人臉識(shí)別,一個(gè)為綁卡界面。就可以創(chuàng)建兩個(gè)分支,各自開發(fā)完以后,先后合并到develop里,這就叫做回歸。
在這個(gè)過程里,A 和 B不需要任何的溝通,分別并行地開發(fā),
git-flow能很好的處理好分支間并行開發(fā)的關(guān)系。
而develop,則會(huì)在適當(dāng)?shù)臅r(shí)候,由合適的人,合并到master,作為下一個(gè)穩(wěn)定版本。

Hotfix

以上3種以外,還有一個(gè)很重要的類型,hotfix。
它是用來修復(fù)緊急bug的,而bug通常是來自線上的,
所以hotfix分支是從master里創(chuàng)建出來的,并且,在bug修改好以后,
要同時(shí)合并到master和develop,這一點(diǎn)需要特別注意。

Release

release更多傾向與版本發(fā)布,項(xiàng)目上線前的一些全面測(cè)試以及上線準(zhǔn)備。
同樣也肩負(fù)著版本歸檔,回滾支持等

git-flow 流程圖

2.git-flow 安裝

1.Mac下安裝

通過 homebrew 安裝

在終端執(zhí)行``brew install git-flow-avh```
homebrew 安裝 gitflow

2.windows下安裝

wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
安裝 git-flow, 你需要 wget 和 util-linux。PS:我沒有 windows,也沒實(shí)踐過。

3.開始使用

初始化

使用 git-flow,從初始化一個(gè)現(xiàn)有的 git 庫內(nèi)開始:

git flow init

你必須回答幾個(gè)關(guān)于分支的命名約定的問題。

建議使用默認(rèn)值。
終端使用 git-flow.png
增加新功能

新功能的開發(fā)是基于 'develop' 分支的。

通過下面的命令開始開發(fā)新功能 比如人臉識(shí)別功能:

git flow feature start MYFEATURE

這個(gè)操作創(chuàng)建了一個(gè)基于'develop'的特性分支,并切換到這個(gè)分支之下。

完成開發(fā)新功能。這個(gè)動(dòng)作執(zhí)行下面的操作.

合并 MYFEATURE 分支到 'develop'
刪除這個(gè)新特性分支
切換回 'develop' 分支

git flow feature finish MYFEATURE
最重要的是,這個(gè) “feature finish” 命令會(huì)把我們的工作整合到主 “develop” 分支中去。在這里它需要等待:

一個(gè)在更廣泛的 “開發(fā)” 背景下的全面測(cè)試。
稍后和所有積攢在 “develop” 分支中的其它功能一起進(jìn)行發(fā)布。
之后,git-flow 也會(huì)進(jìn)行清理操作。它會(huì)刪除這個(gè)當(dāng)下已經(jīng)完成的功能分支,并且換到 “develop” 分支。

完成提交之后.png

合作開發(fā)一項(xiàng)新功能
可以發(fā)布新功能分支到遠(yuǎn)程服務(wù)器,這樣,其它用戶也可以使用這分支
git flow feature publish MYFEATURE
取得其它用戶發(fā)布的新特性分支,并簽出遠(yuǎn)程的變更。

git flow feature pull origin MYFEATURE

可以使用 git flow feature track MYFEATURE 跟蹤在origin上的特性分支。

發(fā)布 release 版本

當(dāng)你認(rèn)為現(xiàn)在在 “develop” 分支的代碼已經(jīng)是一個(gè)成熟的 release 版本時(shí),這意味著:第一,它包括所有新的功能和必要的修復(fù);第二,它已經(jīng)被徹底的測(cè)試過了。如果上述兩點(diǎn)都滿足,那就是時(shí)候開始生成一個(gè)新的 release 了

開始準(zhǔn)備release版本,使用 git flow release命令.

它從 'develop' 分支開始創(chuàng)建一個(gè) release 分支

請(qǐng)注意,release 分支是使用版本號(hào)命名的。這是一個(gè)明智的選擇,這個(gè)命名方案還有一個(gè)很好的附帶功能,那就是當(dāng)我們完成了release 后,git-flow 會(huì)適當(dāng)?shù)?em>自動(dòng)去標(biāo)記那些 release 提交。

有了一個(gè) release 分支,再完成針對(duì) release 版本號(hào)的最后準(zhǔn)備工作(如果項(xiàng)目里的某些文件需要記錄版本號(hào)),并且進(jìn)行最后的編輯。![發(fā)布 release](/Users/Yan/Desktop/圖片/發(fā)布 release.png)
完成 release
現(xiàn)在是時(shí)候按下那個(gè)危險(xiǎn)的紅色按鈕來完成我們的release了:

git flow release finish 3.6.0

finish.png

這個(gè)命令會(huì)完成如下一系列的操作:

首先,git-flow 會(huì)拉取遠(yuǎn)程倉庫,以確保目前是最新的版本。
然后,release 的內(nèi)容會(huì)被合并到 “master” 和 “develop” 兩個(gè)分支中去,這樣不僅產(chǎn)品代碼為最新的版本,而且新的功能分支也將基于最新代碼。
為便于識(shí)別和做歷史參考,release 提交會(huì)被標(biāo)記上這個(gè) release 的名字(在我們的例子里是 “3.6.0”)。
清理操作,版本分支會(huì)被刪除,并且回到 “develop”。
從 Git 的角度來看,release 版本現(xiàn)在已經(jīng)完成。依據(jù)你的設(shè)置,對(duì) “master” 的提交可能已經(jīng)觸發(fā)了你所定義的部署流程

hotfix

很多時(shí)候,僅僅在幾個(gè)小時(shí)或幾天之后,當(dāng)對(duì) release 版本作做全面測(cè)試時(shí),可能就會(huì)發(fā)現(xiàn)一些小錯(cuò)誤。
在這種情況下,git-flow 提供一個(gè)特定的 “hotfix” 工作流程(因?yàn)樵谶@里不管使用 “功能” 分支流程,還是 “release” 分支流程都是不恰當(dāng)?shù)模?/p>

創(chuàng)建 Hotfixes

$ git flow hotfix start missing-link
hotfix.png

這個(gè)命令會(huì)創(chuàng)建一個(gè)名為 “hotfix/missing-link” 的分支。因?yàn)檫@是對(duì)產(chǎn)品代碼進(jìn)行修復(fù),所以這個(gè) hotfix 分支是基于 “master” 分支。
這也是和 release 分支最明顯的區(qū)別,release 分支都是基于 “develop” 分支的。因?yàn)槟悴粦?yīng)該在一個(gè)還不完全穩(wěn)定的開發(fā)分支上對(duì)產(chǎn)品代碼進(jìn)行地修復(fù)。

就像 release 一樣,修復(fù)這個(gè)錯(cuò)誤當(dāng)然也會(huì)直接影響到項(xiàng)目的版本號(hào)!

完成 Hotfixes

在把我們的修復(fù)提交到 hotfix 分支之后,就該去完成它了:

$ git flow hotfix finish missing-link
hotfixfinish.png

這個(gè)過程非常類似于發(fā)布一個(gè) release 版本:

  • 完成的改動(dòng)會(huì)被合并到 “master” 中,同樣也會(huì)合并到 “develop” 分支中,這樣就可以確保這個(gè)錯(cuò)誤不會(huì)再次出現(xiàn)在下一個(gè) release 中。
  • 這個(gè) hotfix 程序?qū)⒈粯?biāo)記起來以便于參考。
  • 這個(gè) hotfix 分支將被刪除,然后切換到 “develop” 分支上去。

還是和產(chǎn)生 release 的流程一樣,現(xiàn)在需要編譯和部署你的產(chǎn)品(如果這些操作不是自動(dòng)被觸發(fā)的話)。

git-flow 并不會(huì)為 Git 擴(kuò)展任何新的功能,它僅僅使用了腳本來捆綁了一系列 Git 命令來完成一些特定的工作流程。

PS:sourcetree 提供了 git-flow 功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自git-flow[https://www.git-tower.com/learn/git/ebook/cn/c...
    zfylin閱讀 564評(píng)論 0 1
  • Git Flow工作流程 1.使用背景 在多組員,多項(xiàng)目等環(huán)境進(jìn)行協(xié)同工作時(shí),如果沒有統(tǒng)一規(guī)范、統(tǒng)一流程,則會(huì)導(dǎo)致...
    AllenYZD閱讀 3,896評(píng)論 0 70
  • 本文參考a-successful-git-branching-model Git flow是基于git之上的一種軟...
    同桌的桌閱讀 7,668評(píng)論 0 3
  • Git Flow 是什么 Git Flow是構(gòu)建在Git之上的一個(gè)組織軟件開發(fā)活動(dòng)的模型,是在Git之上構(gòu)建的一項(xiàng)...
    俠骨癡夢(mèng)閱讀 561評(píng)論 0 2
  • Gitflow 規(guī)范我們工作時(shí)寫代碼的流程,操作git的流程 幾個(gè)常用的分支-master 主分支,不允許改代碼...
    丿任曦閱讀 643評(píng)論 0 0

友情鏈接更多精彩內(nèi)容