摘要:工作流如下圖所示現(xiàn)在讓我們來看一個(gè)最簡(jiǎn)單的分支管理的例子。切換到之前實(shí)現(xiàn)新需求的分支,將修補(bǔ)分支合并進(jìn)來,然后繼續(xù)工作。這里我們參考一文來學(xué)習(xí)工作流。分支產(chǎn)品發(fā)布測(cè)試分支。
Git 工作流如下圖所示:
現(xiàn)在讓我們來看一個(gè)最簡(jiǎn)單的分支管理的例子。
Bug
需要緊急修補(bǔ)。這里我們參考 A successful Git branching model 一文來學(xué)習(xí) Git 工作流。
主分支包括 master
分支和 develop
分支。
master
分支develop
分支master
分支用來發(fā)布,HEAD
就是當(dāng)前線上的運(yùn)行代碼。develop
分支就是我們的日常開發(fā)。使用這兩個(gè)分支就具有了最簡(jiǎn)單的開發(fā)模式:develop
分支用來開發(fā)功能,開發(fā)完成并且測(cè)試沒有問題則將 develop
分支的代碼合并到 master
分支并發(fā)布。
主要介紹的輔助分支如下:
feature
分支release
分支hotfix
分支通過這些分支,我們可以做到:團(tuán)隊(duì)成員之間并行開發(fā),feature track
更加容易,開發(fā)和發(fā)布并行以及線上問題修復(fù)。輔助分支與主分支的不同點(diǎn):輔助分支是有限的生命期,他們最終會(huì)被移除。
feature
分支用來開發(fā)具體的功能,一般 fork 自 develop
分支,最終可能會(huì)合并到 develop
分支。比如我們要在下一個(gè)版本增加功能 1、功能 2、功能 3。那么我們就可以起三個(gè) feature
分支:feature1
、 feature2
和 feature3
。(feature
分支命名最好能夠自解釋,這并不是一種好的命名。)隨著我們開發(fā),功能 1 和功能 2 都被完成了,而功能 3 因?yàn)槟承┰蛲瓿刹涣?,那么最終 feature1
和 feature2
分支將被合并到 develop
分支,而 feature3
分支將被干掉。
從 develop 分支建立 feature 分支并切換到 feature 分支。
$ git checkout -b myfeature develop
Switched to a new branch "myfeature"
$ git checkout develop
Switched to branch develop
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature
$ git push origin develop
上面我們 merge 分支的時(shí)候使用了參數(shù) --no-ff
,ff 是fast-forward
的意思,--no-ff
就是禁用fast-forward
。關(guān)于這兩種模式的區(qū)別如下圖。(可以使用 sourceTree
或者命令git log --graph
查看。)
)
看了上面的圖,那么使用非fast-forward
模式來 merge
的好處就不言而喻了:我們知道哪些 commit
是某些 feature
相關(guān)的。雖然 git merge
的時(shí)候會(huì)自動(dòng)判斷是否使用fast-farward
模式,但是有時(shí)候?yàn)榱烁鞔_,我們還是要加參數(shù)--no-ff
或者--ff
。
release
分支在我看來是 pre-master
。release
分支從 develop
分支 fork
出來,最終會(huì)合并到 develop
分支和 master
分支。合并到 master
分支上就是可以發(fā)布的代碼了。有人可能會(huì)問那為什么合并回 develop
分支呢?很簡(jiǎn)單,有了 release
分支,那么相關(guān)的代碼修復(fù)就只會(huì)在 release
分支上改動(dòng)了,最后必然要合并到 develop
分支。下面細(xì)說。
我們最初所有的開發(fā)工作都在 develop
分支上,當(dāng)我們這一期的功能開發(fā)完畢的時(shí)候,我們基于 develop
分支開一個(gè)新的 release
分支。這個(gè)時(shí)候我們就可以對(duì) release
分支做統(tǒng)一的測(cè)試了,另外做一些發(fā)布準(zhǔn)備工作:比如版本號(hào)之類的。
如果測(cè)試工作或者發(fā)布準(zhǔn)備工作和具體的開發(fā)工作由不同人來做,比如國內(nèi)的 RD
和 QA
,這個(gè) RD
就可以繼續(xù)基于 develop
分支繼續(xù)開發(fā)了。再或者說公司對(duì)于發(fā)布有嚴(yán)格的時(shí)間控制,開發(fā)工作提前并且完美的完成了,這個(gè)時(shí)候我們就可以在 develop
分支上繼續(xù)我們下一期的開發(fā)了。同時(shí)如果測(cè)試有問題的話,我們將直接在 release
分支上修改,然后將修改合并到 develop
分支上。
待所有的測(cè)試和準(zhǔn)備工作做完之后,我們就可以將 release
分支合并到 master
分支上,并進(jìn)行發(fā)布了。
一些相關(guān)命令如下。
$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"
$ ./bump-version.sh 1.2
File modified successfully, version bumped to 1.2.
$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)
$ git checkout master
Switched to branch master
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2
$ git checkout develop
Switched to branch develop
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git branch -d release-1.2
Deleted branch release-1.2 (was ff452fe).
顧名思義,hotfix
分支用來修復(fù)線上 bug
。當(dāng)線上代碼出現(xiàn) bug
時(shí),我們基于 master
分支開一個(gè) hotfix
分支,修復(fù) bug 之后再將 hotfix
分支合并到 master
分支并進(jìn)行發(fā)布,同時(shí) develop
分支作為最新最全的代碼分支,hotfix
分支也需要合并到 develop
分支上去。仔細(xì)想一想,其實(shí) hotfix
分支和 release
分支功能類似。hotfix
的好處是不打斷 develop
分支正常進(jìn)行,同時(shí)對(duì)于現(xiàn)實(shí)代碼的修復(fù)貌似也沒有更好的方法了.
一些相關(guān)的命令。
$ git checkout -b hotfix-1.2.1 master
Switched to a new branch "hotfix-1.2.1"
$ ./bump-version.sh 1.2.1
Files modified successfully, version bumped to 1.2.1.
$ git commit -a -m "Bumped version number to 1.2.1"
[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1
1 files changed, 1 insertions(+), 1 deletions(-)
$ git commit -m "Fixed severe production problem"
[hotfix-1.2.1 abbe5d6] Fixed severe production problem
5 files changed, 32 insertions(+), 17 deletions(-)
Fix bug 之后,hotfix
合并到 master
$ git checkout master
Switched to branch master
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2.1
$ git checkout develop
Switched to branch develop
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)
$ git branch -d hotfix-1.2.1
Deleted branch hotfix-1.2.1 (was abbe5d6).
master
分支:主分支,主要存放已經(jīng)發(fā)布到生產(chǎn)服務(wù)器上的代碼。develop
分支:日常開發(fā)分支,該分支從 master
分支拉取,主要存放著在實(shí)現(xiàn)新的產(chǎn)品需求時(shí)開發(fā)的代碼。feature
分支:日常開發(fā)特性分支。一般從 develop
分支拉取,主要存放著在實(shí)現(xiàn)新產(chǎn)品需求具體功能時(shí)開發(fā)的代碼。具體功能開發(fā)完成之后將合并到 develop
分支。release
分支:產(chǎn)品發(fā)布測(cè)試分支。主要存放著從 develop
分支合并過來的代碼。 develop
分支的代碼在新的產(chǎn)品需求全部實(shí)現(xiàn)后會(huì)合并到 release
分支進(jìn)行測(cè)試,測(cè)試沒有問題后(到了發(fā)布日期)將會(huì)合并到 master
分支并發(fā)布。測(cè)試有問題將會(huì)在 release
分支修改,修改測(cè)試沒問題后將會(huì)合并到 master
分支和 develop
分支。hotfix
分支:線上 bug 修復(fù)分支。主要存放這在緊急修補(bǔ)中為修復(fù)問題開發(fā)的代碼,在測(cè)試沒有問題后將會(huì)合并到 master
分支和 develop
分支。文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/125991.html
摘要:使用此命令能看到那些修改被暫存到了哪些沒有哪些文件沒有被到。需要說明一點(diǎn),是本地的,不會(huì)通過命令上傳到上。查看現(xiàn)有的所有儲(chǔ)藏,此命令顯然暗示了可以多次保存工作進(jìn)度,并用在恢復(fù)時(shí)候選擇。 Git 版本庫原理 Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。...
摘要:使用此命令能看到那些修改被暫存到了哪些沒有哪些文件沒有被到。需要說明一點(diǎn),是本地的,不會(huì)通過命令上傳到上。查看現(xiàn)有的所有儲(chǔ)藏,此命令顯然暗示了可以多次保存工作進(jìn)度,并用在恢復(fù)時(shí)候選擇。 Git 版本庫原理 Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。...
摘要:掌握了命令行,使用圖形化工具如探囊取物。管理的文件狀態(tài)已修改已暫存已提交。由于我們使用了命令,但并未創(chuàng)建新的分支,所以創(chuàng)建了一個(gè)匿名分支。省略遠(yuǎn)程分支名表示將本地分支推送到與之存在追蹤關(guān)系的遠(yuǎn)程分支通常同名。概述此篇博文意在讓新手快速上手 Git,滿足工作中的基本需求,而非梳理細(xì)節(jié)。后續(xù)會(huì)再開一個(gè)系列,來探討 Git 細(xì)節(jié)問題。一、Git 的安裝這部分網(wǎng)站上資料非常多,根據(jù)自己的系統(tǒng)版本查找...
摘要:沒有一個(gè)全局的版本號(hào),而有目前為止這是跟相比缺少的最大的一個(gè)特征。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時(shí)降低對(duì)版本庫的破壞。合并沖突多人對(duì)同一文件的工作副本進(jìn)行更改,并將這些更改提交到倉庫。Git 是一種分布式版本控制系統(tǒng),它可以不受網(wǎng)絡(luò)連接的限制,加上其它眾多優(yōu)點(diǎn),目前已經(jīng)成為程序開發(fā)人員做項(xiàng)目版本管理時(shí)的首選,非開發(fā)人員也可以用 Git 來做自己的文檔版本管理工具。 ...
閱讀 3771·2023-04-25 20:09
閱讀 3921·2022-06-28 19:00
閱讀 3298·2022-06-28 19:00
閱讀 3322·2022-06-28 19:00
閱讀 3461·2022-06-28 19:00
閱讀 3095·2022-06-28 19:00
閱讀 3366·2022-06-28 19:00
閱讀 2889·2022-06-28 19:00