gitflow工作流

簡介

Gitflow工作流定義了一個圍繞項目發(fā)布的嚴格分支模型,它不同的分支分配一個很明確的角色,并定義分支之間如何和什么時候進行交互。
Gitflow工作流仍然用遠程倉庫作為所有開發(fā)者的交互中心。和其它的工作流一樣,開發(fā)者在本地工作并push分支到要中央倉庫中。
Gitflow工作流應被視作為指導方針,而非“鐵律”。你可以組合使用不同的流程,找到適合自己項目的工作流。

主要分支介紹

image
  • master分支:主分支,產(chǎn)品的功能全部實現(xiàn)后,最終在master分支對外發(fā)布,長存分支。
  • develop分支:開發(fā)分支,基于master分支克隆,產(chǎn)品的編碼工作在此分支進行,長存分支。
  • release分支:測試分支,基于delevop分支克隆,產(chǎn)品編碼工作完成后,發(fā)布到本分支測試,測試過程中發(fā)現(xiàn)的小bug直接在本分支進行修復,修復完成后合并到develop分支。本分支屬于臨時分支,目的實現(xiàn)后可刪除分支。
  • hotfix分支:bug修復分支,基于master分支或里程碑tag克隆,主要用于修復對外發(fā)布的分支,收到客戶的bug反饋后,在此分支進行修復,修復完畢后分別合并到develop分支和master分支。本分支屬于臨時分支,目的實現(xiàn)后可刪除分支。
  • feature分支:功能特征分支,基于develop分支克隆,主要用于多人協(xié)助開發(fā)場景或探索性功能驗證場景,功能開發(fā)完畢后合并到develop分支。feature分支可創(chuàng)建多個,屬于臨時分支,目的實現(xiàn)后可刪除分支。

示例

下面的例子將演示gitflow流程如何被用來管理一次產(chǎn)品發(fā)布。假設你已經(jīng)創(chuàng)建好了一個遠程倉庫。

(1)基于master分支,創(chuàng)建develop分支

image
git checkout -b develop      /* 基于master分支建立develop分支,并切換到develop分支 */
git push -u origin develop /* 推送develop分支到遠程倉庫 */

(2)其他開發(fā)者應該clone遠程倉庫,并且為develop創(chuàng)建一個追蹤分支。

git clone https://github.com/haishancheng/gitTest.git /* clone遠程倉庫 */
git checkout -b develop origin/develop /* 基于遠程倉庫的develop分支建立本地的develop分支進行開發(fā) */

(3)完成部署,進入開發(fā)

到現(xiàn)在,所有人都把包含有完整歷史的分支(develop)在本地配置好了。此時所有人都可以進行開發(fā)了。假設工程師A和工程師B開始開發(fā)新功能。他們需要為各自的功能創(chuàng)建相應的分支。新分支不是基于master分支,而是應該基于develop分支。然后他們各自在自己的功能開發(fā)分支上開展工作。通常就是這種git三部曲:edit,stage,commit。


image
 git checkout -b feature-xxx develop /* 基于develop分支建立各自的feature分支,并切換到feature分支 */
 …coding中…    /* 代碼編寫中*/
 git add **.** /* 提交修改到暫存區(qū)*/
 git commit -m "提交注釋" /* 提交到本地倉庫*/

(4)功能開發(fā)完畢

工程師A的功能開發(fā)完畢了,他需要所完成的功能合并入develop分支,并推送到遠程倉庫


image
git checkout develop /* 切換到develop分支 */
git pull origin develop /* 執(zhí)行代碼拉取操作,防止代碼沖突 */
git merge feature-xxx /* 將完成的功能分支合并入develop分支*/
git push origin develop /* 推送到遠程倉庫 */
git branch -d feature-xxx /* 刪掉功能分支*/

(5)進行測試并且修復bug

工程師A階段性的開發(fā)工作已完成,需要為產(chǎn)品發(fā)布的準備工作。啟動測試工作,將代碼發(fā)布到測試分支release,并推向遠程倉庫。測試工程師提交Bug后,開發(fā)人員在release分支上修復bug。


image
git checkout -b release /* 基于develop分支建立release分支,并切換到release分支 */
git push origin release /* 將release分支推送到遠程release分支 */
…解決bug coding中…      /* 解決bug中 */
git add **.** /* 提交修改到暫存區(qū)*/
git commit -m "修復說明中最好添加Bug#BugID關(guān)鍵字" /* 提交到本地倉庫*/

(6)修完bug,合回master和develop分支

bug修復完畢之后,工程師A就要把修復完的測試分支合并入master和develop,然后再將測試分支刪除。


image
git checkout master /* 切換到master分支 */
git merge release /* 合并release分支到master分支 */
git push origin master    /* 推送master分支到遠程倉庫master分支 */
git checkout develop      /* 切換到develop分支 */
git merge release /* 合并release分支到master分支 */
git push origin develop  /* 推送develop分支到遠程倉庫develop分支 */
git branch -d release /* 刪掉本地release分支 */
git push origin --delete release /* 刪掉遠程倉庫的release分支 */

(7)打tag標簽

打一個里程碑tag標簽,并推送到遠程倉庫,就可以發(fā)布了

git checkout master  /* 切換到master分支 */
git tag -m "task#003v1.0.0首版發(fā)布" v1.0.0.181018 /* 創(chuàng)建里程碑tag */
git push origin v1.0.0.181018 /* 推送里程碑tag到遠程倉庫 */

(8)線上bug修復

  • 用戶發(fā)現(xiàn)了一個bug,基于master(或tag)創(chuàng)建了一個用于維護的分支(hotfix分支),修復完畢之后合入master合develop分支


    image
git checkout-b hotfix-v1.0.0.181018 v1.0.0.181018 /* 基于tag創(chuàng)建hotfix分支*/
… fix the bug…                              /* 修復bug*/
git checkout master                      /* 切換到master分支 */
git merge hotfix-v1.0.0.181018      /* 合并hotfix分支到master分支 */
git push origin master /* 推送master分支到遠程倉庫master分支 */
git checkout develop /* 切換到develop分支 */
git merge hotfix-v1.0.0.181018      /* 合并hotfix分支到master分支 */
git push origin develop /* 推送develop分支到遠程倉庫develop分支 */
git branch -d hotfix-v1.0.0.181018 /* 刪掉本地hotfix分支 */
git push origin --delete hotfix-v1.0.0.181018 /* 刪掉遠程倉庫的hotfix分支 */
  • 打一個新的里程碑tag標簽,并推送到遠程
git checkout master /* 切換到master分支 */
git tag -m "Bug#002修復某某Bug" v1.0.1.181019 /* 創(chuàng)建里程碑tag */
git push origin v1.0.1.181019 /* 推送里程碑tag到遠程倉庫 */
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 大家好!在下游回來了!不啰嗦快進正題!本篇文章是面對剛開始接觸Git的新手,所講命令并不全,在文章結(jié)束會放入...
    老匡話Android閱讀 4,050評論 -2 18
  • 大家好,我是IT修真院北京分院第22期學員,一枚正直善良的web程序員。 1.背景介紹 什么是Git工作流? Gi...
    古碑先生閱讀 1,008評論 0 0
  • 1.背景介紹 什么是Git工作流? Git工作流你可以理解為工作中團隊成員遵守的一種代碼管理方案,在Git中有以下...
    cczhuc閱讀 9,614評論 1 21
  • 主要了解git的一些基本的團隊協(xié)作命令,和GitFlow工作流指南 git 團隊協(xié)作的一些命令 1.開分支 2.切...
    DeerRun閱讀 781評論 0 10
  • 學習完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師 本節(jié)視頻 【視頻】Git工作流指南-GitFlow工作流 概述 ...
    擼帝閱讀 2,297評論 0 40

友情鏈接更多精彩內(nèi)容