Git flow 概念
1.新功能開發工作流
1.1切換到本地倉庫工作區
cd /home/timerhunter/workspace
1.2從遠程倉庫克隆代碼到本地倉庫
$git clone https://xxxx@localhost:8443/r/valve/V5-Lora.$git
1.3基於master分支,創建develop分支
$git checkout master
$git checkout -b develop
$git push origin develop /* 推送develop分支到遠程倉庫 */
注:編碼工作主要在develop分支,master分支主要用來發布穩定版本
1.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包推送到遠程倉庫
1.5 推送代碼到遠程倉庫
當完成一個功能點或階段工作時,將代碼推送到遠程倉庫develop分支
/* 執行代碼拉取操作,防止代碼衝突 */
$git pull
/* 解決代碼衝突後,推送代碼到遠程倉庫*/
$git push origin develop
注:禁止將未編譯或編譯不通過的代碼提交到遠程倉庫,如果編碼工作進行未完成可以提交到本地倉庫中,等待該功能點全部實現後再將代碼推送到遠程倉庫中。
1.6 將代碼發佈到測試分支
階段性的開發工作已完成,啓動小批量測試工作,將代碼發佈到測試分支release
$git checkout develop
$git checkout -b release
$git push origin release
1.7 測試工程師提交Bug後修復
從遠程倉庫拉取代碼
/* 克隆倉庫 */
$git clone https://[email protected]:8443/r/. admin/test.$git
/* 查看遠程倉庫分支情況:克隆倉庫時只能克隆master分支,因此需要拉取指定分支,我們使用$git branch -r查看遠程分支情況 */
$git branch -r
origin/HEAD -> origin/master
origin/dev
origin/master
origin/release
拉取測試分支
$git checkout -b release origin/release
1.8測試工作完成後,合併代碼到develop分支然後到主線
$git checkout develop
$git merge release
1.9開發工作和測試工作都完畢後,發佈時將develop分支合併到主線
$git checkout master
$git merge develop
1.10階段開發完畢,打一個里程碑Tag包
-
創建里程碑Tag
$git tag -m "Task#003 v1.0.0 首版發佈" v1.0.0.170718
-
推送里程碑Tag到遠程倉庫
$git push origin v1.0.0.170718
2.發佈後的產品Bug修復工作流
2.1 獲取Bug產品的軟件發佈版本號
2.2 查找里程碑Tag
查詢里程碑及其提交說明
$git tag -n1 -l v*
2.3 基於里程碑Tag創建分支
git checkout -b [創建的分支名稱] [里程碑Tag名稱]
$git checkout -b bugfix-v1.0.0.170718 v1.0.0.170718
2.4 修復代碼後可以查詢修改過的地方
$git diff
2.5 修復完畢後分別合併到develop分支和master分支
$git checkout develop
$git merge hotfix-v1.0.0.170718
$git push origin develop
$git checkout master
$git merge develop
$git push origin master
2.6創建新的里程碑Tag
$git tag -m "Bug#002 修復某某Bug" v1.0.1.170719
推送到遠程倉庫
$git push origin v1.0.1.170719
2.7刪除bugfix分支
刪除本地分支 $git branch -d [本地分支名]
$git branch -d bugfix-v1.0.0.170718
刪除遠程分支 $git push origin :[遠程分支名]
$git push origin :bugfix-v1.0.0.170718