Gitflow 工做流程

譯者: 雖然 git 已是互聯網行業主流的版本控制工具, 但對於 git 新手, 或想從 svn 遷至 git 的團隊而言, 一個簡明合理的流程範式仍是頗有參考價值的.git

本文譯自 Bitbucket Gitfow Workflowbash

Gitflow 工做流程是一個Git工做流程設計,由 nvie 的 Vincent Driessen 發佈並流行起來。Gitflow工做流圍繞項目的版本管理定義了嚴格分支模型。這爲管理大型項目提供了一個強大的框架。服務器

Gitflow 很是適合具備發佈週期的項目。此工做流程不會增長任何超出功能分支工做流程的新概念或命令。相反,它爲不一樣的分支分配了很是具體的角色,並定義它們應該什麼時候以及如何進行交互。除了feature分支外,它還使用單獨的分支來準備,維護和記錄版本。固然,您還能夠利用功能分支工做流的全部優點:拉取請求,隔離實驗和更高效的協做。框架

入門

Gitflow 實際上只是一個 Git 工做流的抽象概念。它規定了有哪些類型的分支以及如何將它們合併在一塊兒。咱們將在下面提到這些分支的目的。git-flow工具集是一個可安裝的命令行工具。git-flow的安裝過程很簡單。git-flow的軟件包可在多個操做系統上使用。在OSX系統上,您能夠執行 brew install git-flow。在Windows上,您須要下載並安裝git-flow。安裝git-flow後,您能夠在項目中執行 git flow init 來使用它。Git-flow 是 Git 的一層包裝。該 git flow init 命令是原來 git init 命令的擴展,除了爲您建立分支以外,不會更改倉庫任何內容。svn

這個怎麼運做

Git流程工做流程 - 歷史分支

Develop 和 Master 分支

此工做流使用兩個分支來記錄項目的歷史記錄。master分支記錄正式發佈的歷史, 而develop分支用做功能開發的集成分支。在使用版本號標記master的提交也很方便。工具

第一步是用develop分支補充主分支。一種簡單的方法是讓一個開發人員在本地建立一個空develop分支並將其推送到服務器:post

git branch develop
git push -u origin develop
複製代碼

此分支將包含項目的完整歷史記錄,而master將包含節選的版本。其餘開發人員如今應該克隆遠程倉庫並跟蹤develop分支.spa

使用 git-flow 時,git flow init 會在現有repo上建立develop分支:操作系統

$ git flow init
Initialized empty Git repository in ~/project/.git/
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []

$ git branch
* develop
 master
複製代碼

功能分支

每一個新功能都應駐留在本身的分支中,能夠將其推送到遠程倉庫以進行備份/協做。可是,feature分支使用develop做爲其父分支,而不master。feature分支開發完成後,它將合併回develop分支。feature分支永遠不該直接與master交互。命令行

Git流程工做流程 - 功能分支

請注意,feature與develop分支合併是功能分支工做流的意圖和目的。可是,Gitflow工做流程並不止於此。

feature分支一般是從最新的develop分支建立出來的。

建立功能分支

沒有git-flow擴展:

git checkout develop
git checkout -b feature_branch
複製代碼

使用git-flow擴展時:

git flow feature start feature_branch
複製代碼

繼續你的工做,像往常同樣使用Git。

完成功能分支

當你完成該功能的開發工做後,下一步是合併feature_branch到develop。

沒有git-flow擴展:

git checkout develop
git merge feature_branch
複製代碼

使用git-flow擴展:

git flow feature finish feature_branch
複製代碼

Release 分支

Git Flow工做流程 - 發佈分支機構

一旦develop有足夠的功能可用於發佈(或預約的發佈日期即未來臨),您就能夠從develop分支分出release分支。建立此分支將啓動下一個發佈週期,所以在此分支不能添加任何新功能,只能作錯誤修復,文檔生成和其餘面向發佈的任務。一旦準備好發佈,release分支就會合併到master並標記一個版本號。此外,它還應該合併回可能已有更新的develop分支。

使用一個專有分支來準備發佈可使一個團隊在完善​​當前版本的同時,另外一個團隊繼續爲下一個版本開發功能。它還創建了一個可明肯定義的開發階段(好比說,「本週咱們正在爲版本4.0作準備」,而且實際上在倉庫結構中能夠看到它)。

建立release分支是另外一種簡單的分支操做。像feature分支同樣,release分支也基於develop分支。可使用如下方法建立新release分支。

沒有git-flow擴展:

git checkout develop
git checkout -b release/0.1.0
複製代碼

使用git-flow擴展時:

$ git flow release start 0.1.0
Switched to a new branch 'release/0.1.0'
複製代碼

一旦release分支準備好發佈,它會被合併到master和develop,而後release分支將被刪除。合併回develop很重要,由於在新分支裏須要訪問到release分支的重要更新。若是您的組織強調代碼審查,這將是拉取請求的理想位置。

要完成release分支,請使用如下方法:

沒有git-flow擴展:

git checkout develop
git merge release/0.1.0
git checkout master
git merge release/0.1.0
複製代碼

或者使用git-flow擴展:

git flow release finish '0.1.0'
複製代碼

Hotfix 分支

Git流程工做流程 - 修補程序分支

維護或「hotfix」分支用於快速修補生產版本。hotfix分支很像release分支和feature分支,除了它是基於master而不是develop。它應該是惟一直接從master分出的分支。一旦修復完成,它應該合併到master和develop(或當前release分支),而且master應該用已更新的版本號標記。

經過專有的分支修復錯誤,使您的團隊能夠在不中斷其他工做流程或等待下一個發佈週期的狀況下解決問題。您能夠將hotfix分支視爲直接交互與master的臨時release分支。一個hotfix分支可使用如下方法建立:

沒有git-flow擴展:

git checkout master
git checkout -b hotfix_branch
複製代碼

使用git-flow擴展時:

$ git flow hotfix start hotfix_branch
複製代碼

與完成release分支相似,hotfix分支也合併到master和develop.

git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
$ git flow hotfix finish hotfix_branch
複製代碼

舉例

演示功能分支流程的完整示例以下。假設咱們有一個帶master分支的倉庫。

git checkout master
git checkout -b develop
git checkout -b feature_branch
# 在 feature 分支上進行開發
git checkout develop
git merge feature_branch
git checkout master
git merge develop
git branch -d feature_branch
複製代碼

除了feature和release流程,還有一個hotfix例子以下:

git checkout master
git checkout -b hotfix_branch
# 開發完成後提交到 hotfix_branch
git checkout develop
git merge hotfix_branch
git checkout master
git merge hotfix_branch
複製代碼

摘要

在這裏,咱們討論了Gitflow工做流程。Gitflow是您和您的團隊可使用的衆多Git工做流程之一。

關於Gitflow的一些關鍵要點:

  • 該工做流程很是適合基於發佈的軟件工做流程。
  • Gitflow提供一個專有的生產環境修復渠道。

Gitflow的整體流程:

  1. 從master建立一個develop分支
  2. 從develop建立一個release分支
  3. 從develop建立一個feature分支
  4. 當feature完成時它將合併到develop分支
  5. 當release完成時它將合併到develop和master分支
  6. 若是master檢測到問題,則從master建立hotfix分支
  7. 一旦hotfix完成,它將合併到master和develop分支

接下來,瞭解Forking工做流程 或訪問咱們的工做流程比較頁面

相關文章
相關標籤/搜索