1. 程式人生 > >GitFlow工作流常用操作流程

GitFlow工作流常用操作流程

localhost devel 例如 diff 行合並 hot per 進行 ash

1. 主要分支介紹

1.1 master分支

主分支,產品的功能全部實現後,最終在master分支對外發布。

1.2 develop分支

開發分支,基於master分支克隆,產品的編碼工作在此分支進行。

1.3 release分支

測試分支,基於delevop分支克隆,產品編碼工作完成後,發布到本分支測試,測試過程中發現的小bug直接在本分支進行修復,修復完成後合並到develop分支。本分支屬於臨時分支,目的實現後可刪除分支。

1.4 bugfix分支

Bug修復分支,基於master分支或發布的裏程碑Tag克隆,主要用於修復對外發布的分支,收到客戶的Bug反饋後,在此分支進行修復,修復完畢後分別合並到develop分支和master分支。本分支屬於臨時分支,目的實現後可刪除分支。

1.5 feature分支

功能特征分支,基於develop分支克隆,主要用於多人協助開發場景或探索性功能驗證場景,功能開發完畢後合並到develop分支。feature分支可創建多個,屬於臨時分支,目的實現後可刪除分支。

2. 新功能開發工作流

2.1 切換到本地倉庫工作區

cd /home/timerhunter/workspace

2.2 從遠程倉庫克隆代碼到本地倉庫

git clone https://xxxx@localhost:8443/r/valve/V5-Lora.git

2.3 基於master分支,創建develop分支

/* 切換到master分支 */
git checkout master
/* 基於master分支克隆develop分支,並在克隆完畢後直接跳轉到develop分支 */
git checkout -b develop
/* 推送develop分支到遠程倉庫 */
git push origin develop

註:編碼工作主要在develop分支,master分支主要用來發布穩定版本

2.4 在本地倉庫的開發流程

完成一個功能點或者一天的工作結束時,將代碼提交到本地倉庫

/* 提交修改到緩沖區 */
git add .
/* 提交修改到本地倉庫 */
/* 如果是修復的BUG,應該在修改說明的最開始添加Bug#ID,多個Bug用逗號分隔,例如Bug#002,003 */
/* 如果是完成了一個指派的任務,應該在修改說明的最開始添加Task#TaskID,例如Task#165 */
git commit -m "Bug#123 修改說明"
/* 每完成一個功能點可以對代碼進行打包 */
git tag -m "簡要說明增加/修復/刪除了什麽功能" v0.0.0.170718

註:不是每一個Tag都需要提交到遠程倉庫,比如可以在完成一個功能點的編碼工作後未編譯就打一個包,僅存儲於本地倉庫,在編譯成功&測試通過後,再打一個新的Tag包(裏程碑Tag包),僅將裏程碑Tag包推送到遠程倉庫

2.5 推送代碼到遠程倉庫

當完成一個功能點或階段工作時,將代碼推送到遠程倉庫develop分支

/* 執行代碼拉取操作,防止代碼沖突 */
git pull
/* 解決代碼沖突後,推送代碼到遠程倉庫*/
git push origin develop

註:禁止將未編譯或編譯不通過的代碼提交到遠程倉庫,如果編碼工作進行未完成可以提交到本地倉庫中,等待該功能點全部實現後再將代碼推送到遠程倉庫中。

2.6 將代碼發布到測試分支

階段性的開發工作已完成,啟動小批量測試工作,將代碼發布到測試分支release

git checkout develop
git checkout -b release
git push origin release

2.7 測試工程師提交Bug後修復

  • 修復流程同#2.4,#2.5;
  • 註意在git commit時的修復說明中添加Bug#BugID關鍵字
  • 完成一個Bug修復或完成階段性工作後,將代碼推送到遠程分支

2.8 測試工作完成後,合並代碼到develop分支

/* 切換到develop分支 */
git checkout develop
/* 執行合並操作,將release分支代碼合並到develop分支 */
git merge release
/* 如果合並報錯,則解決沖突,沖突解決後繼續再次執行合並 */

2.9 開發工作和測試工作都完畢後,將develop分支合並到主線

git checkout master
git merge develop

2.10 階段開發完畢,打一個裏程碑Tag包

/* 創建裏程碑Tag */
git tag -m "Task#003 v1.0.0 首版發布" v1.0.0.170718
/* 推送裏程碑Tag到遠程倉庫 */
git push origin v1.0.0.170718

3. 發布後的產品Bug修復工作流

3.1 獲取Bug產品的軟件發布版本號

3.2 查找裏程碑Tag

 /* 查詢裏程碑及其提交說明 */
 git tag -n1 -l v*

3.3 基於裏程碑Tag創建分支

 /* git checkout -b [創建的分支名稱] [裏程碑Tag名稱] */
 git checkout -b bugfix-v1.0.0.170718 v1.0.0.170718

3.4 修復代碼後可以查詢修改過的地方

 git diff

3.5 修復完畢後分別合並到develop分支和master分支

/* 合並到develop */
git checkout develop
git merge hotfix-v1.0.0.170718
/* 提交到遠程倉庫develop分支 */
git push origin develop
/* 合並到master */
git checkout master
git merge hotfix-v1.0.0.170718
/* 提交到遠程倉庫master分支 */
git push origin master

3.6 創建新的裏程碑Tag

 git tag -m "Bug#002 修復某某Bug" v1.0.1.170719
 /* 推送到遠程倉庫 */
 git push origin v1.0.1.170719

3.7 刪除bugfix分支

/* 刪除本地分支-git branch -d [本地分支名]*/
git branch -d bugfix-v1.0.0.170718
/* 刪除遠程分支-git push origin :[遠程分支名]*/
git push origin :bugfix-v1.0.0.170718

目前僅用到這些流程,新學有不足的地方請指出交流。

GitFlow工作流常用操作流程