1. 程式人生 > >Gitflow Workflow工作流

Gitflow Workflow工作流

https://blog.csdn.net/u011904605/article/details/53224420

我說的以下流程,sourceTree等工具已經完美的支援了,滑鼠點兩下就完成了。簡直是完美。

簡介

Feature Branch Workflow是一種非常靈活的開發方式。對於一些規模比較大的團隊,最好就是給特定的分支賦予不同的角色。除了功能分支(feature branch),Gitflow Workflow還使用獨立的分支來準備釋出(preparing)維護(maintaining), 和記錄版本(recording releases)

分支型別和流程

下圖能說明整個流程,只要你看得懂的話。該模式來自 

Nvie


  • feature(多個、玫紅)。主要是自己玩了,差不多的時候要合併回develop去。從不與master互動。
  • develop(1個、黃色)。主要是和feature以及release互動。
  • release(同一時間1個、綠色)。總是基於develop,最後又合併回develop。當然對應的tag跑到master這邊去了。生命週期很短,只是為了釋出
  • hotfix(同一時間1個、紅色)。總是基於master,並最後合併到master和develop。生命週期較短,用了修復bug或小粒度修改釋出。
  • master(1個藍色)。沒有什麼東西,僅是一些關聯的tag,因從不在master上開發。

在這個模型中,master和develop都具有象徵意義。master分支上的程式碼總是穩定的(stable build),隨時可以釋出出去。develop上的程式碼總是從feature上合併過來的,可以進行Nightly Builds,但不直接在develop上進行開發。當develop上的feature足夠多以至於可以進行新版本的釋出時,可以建立release分支。

release分支基於develop,進行很簡單的修改後就被合併到master,並打上tag,表示可以釋出了。緊接著release將被合併到develop;此時develop可能往前跑了一段,出現合併衝突,需要手工解決衝突後再次合併。這步完成後就刪除release分支。

當從已釋出版本中發現bug要修復時,就應用到hotfix分支了。hotfix基於master分支,完成bug修復或緊急修改後,要merge回master,打上一個新的tag,並merge回develop,刪除hotfix分支。

由此可見release和hotfix的生命週期都較短,master/develop雖然總是存在但卻不常使用。

分支詳解

主分支 (Historical Branches)


主分支

主分支是所有開發活動的核心分支。所有的開發活動產生的輸出物最終都會反映到主分支的程式碼中。主分支分為master分支和development分支。

master 分支

master分支上存放的應該是隨時可供在生產環境中部署的程式碼(Production Ready state)。當開發活動告一段落,產生了一份新的可供部署的程式碼時,master分支上的程式碼會被更新。同時,每一次更新,最好新增對應的版本號標籤(TAG)。

develop分支

develop分支是儲存當前最新開發成果的分支。通常這個分支上的程式碼也是可進行每日夜間釋出的程式碼(Nightly build)。因此這個分支有時也可以被稱作整合分支(integration branch)。

輔助分支


輔助分支

輔助分支是用於組織解決特定問題的各種軟體開發活動的分支。輔助分支主要用於組織軟體新功能的並行開發、簡化新功能開發程式碼的跟蹤、輔助完成版本釋出工作以及對生產程式碼的缺陷進行緊急修復工作。這些分支與主分支不同,通常只會在有限的時間範圍記憶體在。

輔助分支包括:

  1. 用於開發新功能時所使用的feature分支;
  2. 用於輔助版本釋出的release分支;
  3. 用於修正生產程式碼中的缺陷的hotfix分支。

以上這些分支都有固定的使用目的和分支操作限制。從單純技術的角度說,這些分支與Git其他分支並沒有什麼區別,但通過命名,我們定義了使用這些分支的方法。

feature 分支

使用規範:

  1. 可以從develop分支發起feature分支
  2. 程式碼必須合併回develop分支
  3. feature分支的命名可以使用除masterdeveloprelease-*hotfix-*之外的任何名稱

feature分支(有時也可以被叫做“topic分支”)通常是在開發一項新的軟體功能的時候使用,這個分支上的程式碼變更最終合併回develop分支或者乾脆被拋棄掉(例如實驗性且效果不好的程式碼變更)。

release分支(preparing)


release分支

使用規範:

  • 可以從develop分支派生
  • 必須合併回develop分支和master分支
  • 分支命名慣例:release-*

release分支是為釋出新的產品版本而設計的。在這個分支上的程式碼允許做小的缺陷修正、準備釋出版本所需的各項說明資訊(版本號、釋出時間、編譯時間等等)。通過在release分支上進行這些工作可以讓develop分支空閒出來以接受新的feature分支上的程式碼提交,進入新的軟體開發迭代週期。

當develop分支上的程式碼已經包含了所有即將釋出的版本中所計劃包含的軟體功能,並且已通過所有測試時,我們就可以考慮準備建立release分支了。而所有在當前即將釋出的版本之外的業務需求一定要確保不能混到release分支之內(避免由此引入一些不可控的系統缺陷)。

成功的派生了release分支,並被賦予版本號之後,develop分支就可以為“下一個版本”服務了。所謂的“下一個版本”是在當前即將釋出的版本之後釋出的版本。版本號的命名可以依據專案定義的版本號命名規則進行。

hotfix分支(maintaining)

使用規範:

  • 可以從master分支派生
  • 必須合併回master分支和develop分支
  • 分支命名慣例:hotfix-*

除了是計劃外建立的以外,hotfix分支與release分支十分相似:都可以產生一個新的可供在生產環境部署的軟體版本。

當生產環境中的軟體遇到了異常情況或者發現了嚴重到必須立即修復的軟體缺陷的時候,就需要從master分支上指定的TAG版本派生hotfix分支來組織程式碼的緊急修復工作。

這樣做的顯而易見的好處是不會打斷正在進行的develop分支的開發工作,能夠讓團隊中負責新功能開發的人與負責程式碼緊急修復的人並行的開展工作。

問題

管理衝突

  1. 多個Feature 分支開發完成,提交到develop 分支時,修改了共同的模組。
  2. release 分支或者hotfix 分支修改了bug合併回develop時,發現develop分支已經往前面走了一截。

在執行可能有衝突的操作前,先檢視一下 暫存區 和 工作目錄,保證其中沒有修改。

比如使用git stash就可以把暫存區 和 工作目錄的修改儲存起來,讓暫存區 和 工作目錄處於乾淨的狀態。

更進一步

Gitflow workflow 和pull request 組合起來使用,程式碼審查機制的加入,會讓這個模式大放異彩。下一篇文章中, 我會詳細介紹 程式碼審查


相關推薦

Gitflow Workflow工作

https://blog.csdn.net/u011904605/article/details/53224420我說的以下流程,sourceTree等工具已經完美的支援了,滑鼠點兩下就完成了。簡直是完美。簡介Feature Branch Workflow是一種非常靈活的開發

Git workflow工作及邊角知識

開篇 Git是個老生長談的問題了,如何在工作協作中使用Git,不同團隊有不同的使用方式,最簡單的可能就單個master分支直接擼,把Git當成svn來使用,這樣用起來簡單,但是缺乏分散式的思想,而且在並行開發過程中,光建立trunk、branch、tag等等的

ABAP WORKFLOW工作建立(一)

SAP的工作流是個很老的內容了 做過幾次工作流的專案,現在有時間稍微寫幾篇部落格 一、TCODE:SWDD 建立一個新的workflow 工作流的流程無非就是兩種,第一:同意。第二:拒絕(或者駁回) 1:同意就是進入下一個節點 2:拒絕就是返回上一個節點,或者是直接返回建立

Oozie workflow工作action間引數傳遞實現

假設workflow裡有兩個action節點,shell和hive,hive需要用到shell節點裡的值,shell指令碼如下 #!/bin/sh day=`date '+%Y%m%d%H'` e

SharePoint 2013 Nintex Workflow 工作幫助(六)

工作流動作7. Call web service(Integration分組)一個呼叫WebService的操作。自然,配置項中主要是指向一個WebService進行呼叫。關於配置項的說明:URL必填項

workflow工作型別及其區別

在workflow中,工作流分為兩種型別,順序工作流(Sequential)和狀態機工作流(State Machine)。 順序工作流將一系列要執行的步驟以一種預先設計好的流程順序執行。在這種工作流裡,控制流程的是我們很熟悉的如if-else和while迴圈結構。順序工作

WF工作技術內幕 —— 通過Web服務呼叫Workflow工作(基礎例項)

在開發一個企業ERP系統時,其業務流程是開發的關鍵,系統往往會將開發好的業務方案發布為Web服務以供外界呼叫。客戶可以通過伺服器,網際網路等等方式 去呼叫服務,而解決業務上需要及資訊的交換問題。有見及此,微軟在.NET 3.0基礎上釋出了WF,WCF,以及WCS,WPF(為

工作引擎Oozie(一):workflow

觸發 line last ssa pig oozie apt cnblogs 定時任務 1. Oozie簡介 Yahoo開發工作流引擎Oozie(馭象者),用於管理Hadoop任務(支持MapReduce、Spark、Pig、Hive),把這些任務以DAG(有向無環圖)方式

Git工作指南:Gitflow工作

lee 相對 技術 做的 tags finish 項目 ember 同時 這節介紹的Gitflow工作流借鑒自在nvie的Vincent Driessen。 Gitflow工作流定義了一個圍繞項目發布的嚴格分支模型。雖然比功能分支工作流復雜幾分,但提供了用於一個

GitFlow工作常用操作流程

localhost devel 例如 diff 行合並 hot per 進行 ash 1. 主要分支介紹 1.1 master分支 主分支,產品的功能全部實現後,最終在master分支對外發布。 1.2 develop分支 開發分支,基於master分支克隆,產品的編碼工作

GIT工作-WorkFlow

開篇 Git 三大特色,分支,暫存區,工作流,今天終於要寫到 WorkFlow 了,我彷佛已經看到勝利的曙光,走起。 何謂工作流 WorkFlow 的字面意思,工作流,即工作流程。在分支篇裡,有說過這樣的話:因為有分支的存在,才構成了多工作流的特色。事實的確如此,因為專案開發中,多人協作

SSM框架中整一個工作WorkFlow

  工作流直譯就是工作的流程,但是怎樣設計與實現並應用到程式中還是有一些難度,不然為什麼有些公司可以靠工作流起家呢?其中大量的邏輯充斥其中,稍不注意就會出錯。   本次在Eclipse中使用了Activity外掛,方便使用。   1.首先引入工作流相關的pom包,由於其中會有衝突,我將所有的都貼出來:

Git基本命令和GitFlow工作

本篇部落格講解了git的一些基本的團隊協作命令,和GitFlow工作流指南 git 團隊協作的一些命令 1.開分支 git branch 新分支名 例如,在master分支下,新開一個開發分支: git branch dev 2.切換到新分支 git checkou

Gitflow 工作簡介

Gitflow工作流簡介 Gitflow工作流通過為功能開發、釋出準備和專案維護分配獨立的分支,讓釋出迭代過程更流暢。 Gitflow工作流定義了一個圍繞專案釋出的嚴格分支模型,它會相對複雜一點,但提供了用於一個健壯的用於管理大型專案的框架,非常適合用來管理大型專案的釋出和維護。 貫穿整個開發週

深入理解Odoo(OpenERP)的工作(Workflow)

 一、工作流定義: < ?xml version="1.0"?> <terp><data> <record model="workflow" id=workflow_id> <field name="name"

OpenERP工作祥解(workflow

一、工作流定義: <?xml version="1.0"?>   <terp><data>     <record model="workflow" id=workflow_id>     <field name

《瘋狂Workflow講義——基於Activiti的工作應用開發》學習筆記之一·環境搭建之編碼問題

        在對activiti有了一定了解之後,開始按《瘋狂Workflow講義——基於Activiti的工作流應用開發》中的步驟搭建環境,新建專案,建立resource資料夾,使用第2張的First.bpmn,activiti.cfg.xml,First.java,

Git 工作GitFlow

GitFlow學習:Gitflow工作流是經典模型,體現了工作流的經驗和精髓。隨著專案過程複雜化,會感受到這個工作流中深思熟慮和威力.///////////////////////////////////////////////////////////////////////

工作(Workflow)和BPM的區別

區分Workflow與BPM按照我最初的設想,這篇文章本不應該寫Workflow與BPM的區別的,但是世界總是變化這麼快。前幾天給公司內部的期刊寫了篇介紹工作流的文章,之後就有很多同事詢問Workflow與BPM的區分問題。於是不得已就寫了點這方面自己的看法,現摘錄如下:對Workflow和BPM,沒有嚴格的

Gemini.Workflow 雙子工作正式上線(支援.NET Core)

接觸工作流: 最早接觸工作流,是在04年左右,那年,我創造了 Aries 框架的前身第一版框架,另一個同事,創造了工作流的第一版框架。 只是那時候,我並未參與工作流的核心設計,僅僅是幫寫了個流程設計器,就是下圖這個懷舊的樣子: 然後提供一些(撤回、退回)回收演算法的意見。 並提