成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Git 工作流

Tecode / 2037人閱讀

摘要:工作流如下圖所示現(xiàn)在讓我們來看一個最簡單的分支管理的例子。切換到之前實現(xiàn)新需求的分支,將修補分支合并進來,然后繼續(xù)工作。這里我們參考一文來學(xué)習(xí)工作流。分支產(chǎn)品發(fā)布測試分支。

Git 工作流如下圖所示:

git-flow.png

現(xiàn)在讓我們來看一個最簡單的分支管理的例子。

  1. 開發(fā)某個網(wǎng)站,為實現(xiàn)某個新的需求,創(chuàng)建一個分支并在這個分支上開展工作。
  2. 此時,你突然接到一個電話說有個 Bug 需要緊急修補。
  3. 返回到原先已經(jīng)發(fā)布到生產(chǎn)服務(wù)器上的分支,為這次緊急修補建立一個新分支,并在其中修復(fù)問題。
  4. 通過測試后,回到生產(chǎn)服務(wù)器所在的分支,將修補分支合并進來,然后再推送到生產(chǎn)服務(wù)器上。
  5. 切換到之前實現(xiàn)新需求的分支,將修補分支合并進來,然后繼續(xù)工作。

這里我們參考 A successful Git branching model 一文來學(xué)習(xí) Git 工作流。

主分支

主分支包括 master 分支和 develop 分支。

  • master 分支
  • develop 分支

master 分支用來發(fā)布,HEAD 就是當(dāng)前線上的運行代碼。develop 分支就是我們的日常開發(fā)。使用這兩個分支就具有了最簡單的開發(fā)模式:develop 分支用來開發(fā)功能,開發(fā)完成并且測試沒有問題則將 develop 分支的代碼合并到 master 分支并發(fā)布。

main-branches.png

輔助分支

主要介紹的輔助分支如下:

  • feature 分支
  • release 分支
  • hotfix 分支

通過這些分支,我們可以做到:團隊成員之間并行開發(fā),feature track 更加容易,開發(fā)和發(fā)布并行以及線上問題修復(fù)。輔助分支與主分支的不同點:輔助分支是有限的生命期,他們最終會被移除。

Feature 分支

feature 分支用來開發(fā)具體的功能,一般 fork 自 develop 分支,最終可能會合并到 develop 分支。比如我們要在下一個版本增加功能 1、功能 2、功能 3。那么我們就可以起三個 feature 分支:feature1feature2 feature3。(feature 分支命名最好能夠自解釋,這并不是一種好的命名。)隨著我們開發(fā),功能 1 和功能 2 都被完成了,而功能 3 因為某些原因完成不了,那么最終 feature1feature2 分支將被合并到 develop 分支,而 feature3 分支將被干掉。

feature-branches.png

建立 feature 分支并切換到 feature 分支

從 develop 分支建立 feature 分支并切換到 feature 分支。

$ git checkout -b myfeature develop
Switched to a new branch "myfeature"

合并 feature 分支到 develop

$ 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ù) --no-ff,ff 是fast-forward 的意思,--no-ff就是禁用fast-forward。關(guān)于這兩種模式的區(qū)別如下圖。(可以使用 sourceTree 或者命令git log --graph查看。)

merge-without-ff.png
)

看了上面的圖,那么使用非fast-forward模式來 merge 的好處就不言而喻了:我們知道哪些 commit 是某些 feature 相關(guān)的。雖然 git merge 的時候會自動判斷是否使用fast-farward模式,但是有時候為了更明確,我們還是要加參數(shù)--no-ff或者--ff

Release 分支

release 分支在我看來是 pre-master。release 分支從 develop 分支 fork 出來,最終會合并到 develop 分支和 master 分支。合并到 master 分支上就是可以發(fā)布的代碼了。有人可能會問那為什么合并回 develop 分支呢?很簡單,有了 release 分支,那么相關(guān)的代碼修復(fù)就只會在 release 分支上改動了,最后必然要合并到 develop 分支。下面細說。

我們最初所有的開發(fā)工作都在 develop 分支上,當(dāng)我們這一期的功能開發(fā)完畢的時候,我們基于 develop 分支開一個新的 release 分支。這個時候我們就可以對 release 分支做統(tǒng)一的測試了,另外做一些發(fā)布準備工作:比如版本號之類的。

如果測試工作或者發(fā)布準備工作和具體的開發(fā)工作由不同人來做,比如國內(nèi)的 RDQA,這個 RD 就可以繼續(xù)基于 develop 分支繼續(xù)開發(fā)了。再或者說公司對于發(fā)布有嚴格的時間控制,開發(fā)工作提前并且完美的完成了,這個時候我們就可以在 develop 分支上繼續(xù)我們下一期的開發(fā)了。同時如果測試有問題的話,我們將直接在 release 分支上修改,然后將修改合并到 develop 分支上。

待所有的測試和準備工作做完之后,我們就可以將 release 分支合并到 master 分支上,并進行發(fā)布了。

一些相關(guān)命令如下。

新建 release 分支

$ 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(-)

release 分支合并到 master 分支

$ 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

release 分支合并到 develop 分支

$ git checkout develop
Switched to branch develop
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)

刪除 release 分支

$ git branch -d release-1.2
Deleted branch release-1.2 (was ff452fe).

Hotfix 分支

顧名思義,hotfix 分支用來修復(fù)線上 bug。當(dāng)線上代碼出現(xiàn) bug 時,我們基于 master 分支開一個 hotfix 分支,修復(fù) bug 之后再將 hotfix 分支合并到 master 分支并進行發(fā)布,同時 develop 分支作為最新最全的代碼分支,hotfix 分支也需要合并到 develop 分支上去。仔細想一想,其實 hotfix 分支和 release 分支功能類似。hotfix 的好處是不打斷 develop 分支正常進行,同時對于現(xiàn)實代碼的修復(fù)貌似也沒有更好的方法了.

hotfix-branches.png

一些相關(guān)的命令。

新建 hotfix 分支

$ 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(-)

Fix bug

$ git commit -m "Fixed severe production problem"
[hotfix-1.2.1 abbe5d6] Fixed severe production problem
5 files changed, 32 insertions(+), 17 deletions(-)

hotfix 合并到 master

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

hotfix 合并到 develop 分支

$ git checkout develop
Switched to branch develop
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)

刪除 hotfix 分支

$ git branch -d hotfix-1.2.1
Deleted branch hotfix-1.2.1 (was abbe5d6).

總結(jié)

  • master 分支:主分支,主要存放已經(jīng)發(fā)布到生產(chǎn)服務(wù)器上的代碼。
  • develop 分支:日常開發(fā)分支,該分支從 master 分支拉取,主要存放著在實現(xiàn)新的產(chǎn)品需求時開發(fā)的代碼。
  • feature 分支:日常開發(fā)特性分支。一般從 develop 分支拉取,主要存放著在實現(xiàn)新產(chǎn)品需求具體功能時開發(fā)的代碼。具體功能開發(fā)完成之后將合并到 develop 分支。
  • release 分支:產(chǎn)品發(fā)布測試分支。主要存放著從 develop 分支合并過來的代碼。 develop 分支的代碼在新的產(chǎn)品需求全部實現(xiàn)后會合并到 release 分支進行測試,測試沒有問題后(到了發(fā)布日期)將會合并到 master 分支并發(fā)布。測試有問題將會在 release 分支修改,修改測試沒問題后將會合并到 master 分支和 develop 分支。
  • hotfix 分支:線上 bug 修復(fù)分支。主要存放這在緊急修補中為修復(fù)問題開發(fā)的代碼,在測試沒有問題后將會合并到 master 分支和 develop 分支。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/125991.html

相關(guān)文章

  • Git常用命令小結(jié)

    摘要:使用此命令能看到那些修改被暫存到了哪些沒有哪些文件沒有被到。需要說明一點,是本地的,不會通過命令上傳到上。查看現(xiàn)有的所有儲藏,此命令顯然暗示了可以多次保存工作進度,并用在恢復(fù)時候選擇。 Git 版本庫原理 Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD。...

    付倫 評論0 收藏0
  • Git常用命令小結(jié)

    摘要:使用此命令能看到那些修改被暫存到了哪些沒有哪些文件沒有被到。需要說明一點,是本地的,不會通過命令上傳到上。查看現(xiàn)有的所有儲藏,此命令顯然暗示了可以多次保存工作進度,并用在恢復(fù)時候選擇。 Git 版本庫原理 Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD。...

    Airmusic 評論0 收藏0
  • Git 基本命令,你都學(xué)廢了嗎

    摘要:掌握了命令行,使用圖形化工具如探囊取物。管理的文件狀態(tài)已修改已暫存已提交。由于我們使用了命令,但并未創(chuàng)建新的分支,所以創(chuàng)建了一個匿名分支。省略遠程分支名表示將本地分支推送到與之存在追蹤關(guān)系的遠程分支通常同名。概述此篇博文意在讓新手快速上手 Git,滿足工作中的基本需求,而非梳理細節(jié)。后續(xù)會再開一個系列,來探討 Git 細節(jié)問題。一、Git 的安裝這部分網(wǎng)站上資料非常多,根據(jù)自己的系統(tǒng)版本查找...

    Tecode 評論0 收藏0
  • Git常用命令

    摘要:工作區(qū)狀態(tài)被改變,用這查看修改內(nèi)容。添加文件到倉庫,分兩步使用命令,注意,可反復(fù)多次使用,添加多個文件。使用命令,完成。版本回退命令顯示從最近到最遠的提交日志。要重返未來,用查看命令歷史,以便確定要回到未來哪個版本。 創(chuàng)建版本庫mkdir learngit 創(chuàng)建learngit目錄cd learngit 進入文件夾里pwd 查看目錄路徑git init 初始化倉庫git add re....

    寵來也 評論0 收藏0
  • Git 系列】基礎(chǔ)知識全集

    摘要:沒有一個全局的版本號,而有目前為止這是跟相比缺少的最大的一個特征。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時降低對版本庫的破壞。合并沖突多人對同一文件的工作副本進行更改,并將這些更改提交到倉庫。Git 是一種分布式版本控制系統(tǒng),它可以不受網(wǎng)絡(luò)連接的限制,加上其它眾多優(yōu)點,目前已經(jīng)成為程序開發(fā)人員做項目版本管理時的首選,非開發(fā)人員也可以用 Git 來做自己的文檔版本管理工具。 ...

    ASCH 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<