国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Git 工作流

Tecode / 2014人閱讀

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

Git 工作流如下圖所示:

git-flow.png

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

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

這里我們參考 A successful Git branching model 一文來學習 Git 工作流。

主分支

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

  • master 分支
  • develop 分支

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

main-branches.png

輔助分支

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

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

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

Feature 分支

feature 分支用來開發具體的功能,一般 fork 自 develop 分支,最終可能會合并到 develop 分支。比如我們要在下一個版本增加功能 1、功能 2、功能 3。那么我們就可以起三個 feature 分支:feature1feature2 feature3。(feature 分支命名最好能夠自解釋,這并不是一種好的命名。)隨著我們開發,功能 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 分支的時候使用了參數 --no-ff,ff 是fast-forward 的意思,--no-ff就是禁用fast-forward。關于這兩種模式的區別如下圖。(可以使用 sourceTree 或者命令git log --graph查看。)

merge-without-ff.png
)

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

Release 分支

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

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

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

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

一些相關命令如下。

新建 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 分支用來修復線上 bug。當線上代碼出現 bug 時,我們基于 master 分支開一個 hotfix 分支,修復 bug 之后再將 hotfix 分支合并到 master 分支并進行發布,同時 develop 分支作為最新最全的代碼分支,hotfix 分支也需要合并到 develop 分支上去。仔細想一想,其實 hotfix 分支和 release 分支功能類似。hotfix 的好處是不打斷 develop 分支正常進行,同時對于現實代碼的修復貌似也沒有更好的方法了.

hotfix-branches.png

一些相關的命令。

新建 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).

總結

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125991.html

相關文章

  • Git常用命令小結

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

    付倫 評論0 收藏0
  • Git常用命令小結

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

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

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

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

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

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

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

    ASCH 評論0 收藏0

發表評論

0條評論

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