git分支管理和工作流規範:不同場景細化和演示

情情說發表於2018-03-14

前兩篇介紹了 git基本概念具體的規範,本篇針對不同的使用場景做演示。

分支

分支命名
  • master 分支名稱保持不變
  • develop 分支名稱保持不變
  • feature/<分支名稱> 功能分支
  • release/<分支名稱> 待上線分支
  • hotfix/<分支名稱> 線上緊急修復分支
拉取遠端分支

git checkout -b <分支名稱> origin/<分支名稱> 拉取並關聯遠端分支

建立新分支 

git checkout -b <分支名稱>  建立新分支並切換到新分支

提交備註規範

首行,簡明扼要地描述更新內容; 空出一行; 之後,詳細描述更新內容。

如果對應jira的問題,填寫jira路徑:issue:http://jira.n.xiaomi.com/test1

舉例

修復bug,工單詳情頁面,工單記錄頁面,客服頭像不顯示
<空行佔位符>
導致原因:程式碼邏輯考慮不全
jira: http://jira.n.xiaomi.com/test1

如何整理自己的commit,保持commit清晰

git commit --amend 修改最近一次提交; git rebase  -i  整理提交

  • edit,編輯某一次提交的備註;
  • squash,把當前commit向前合併,一直合併到pick為止;
  • fixup,和squash非常類似,唯一的區別就是,fixup會忽略當前commit的資訊;

再次強調:如果commit已經提交到遠端git倉庫,一定不要再進行整理合並commit。

舉例說明

  1. 基於develop分支建立一個功能分支,名稱為feature/feature1;

    git checkout -b feature/feature1

  2. 新建一個檔案test.txt,提交;

    git commit -m ‘add test.txt file’

  3. 修改檔案test.txt,新增一行內容,提交;

    git commit -m ‘update text.txt file, append content: love vae music’

  4. 發現上一步新增的內容錯誤,想修改內容,但不新增新的commit 修改為正確的內容;

    git commit —amend; 會彈出修改視窗,修改註釋,如果不變,直接回車;

  5. 連續提交3個commit,但想合併為1個commit;

    git分支管理和工作流規範:不同場景細化和演示

  6. 使用git log,確定要rebase的commit-id;

  7. git rebase -i df87607d5dd24c0a73f23284e6988d6d32c0d3a4 顯示編輯視窗

    git分支管理和工作流規範:不同場景細化和演示

  8. 進行編輯,修改如下:

    git分支管理和工作流規範:不同場景細化和演示

  9. 最終結果只會保留commit1:

    git分支管理和工作流規範:不同場景細化和演示

新人加入,如何加入開發

從遠端拉取develop分支: git checkout -b <分支名稱> origin/<分支名稱> 拉取並關聯遠端分支

如果要開發新功能,基於develop分支建立feature分支: git checkout -b feature/feature1

如果要修復線上緊急bug,基於master分支建立hotfix分支: git checkout -b hotfix/hotfix1

開發一個feature

基於develop分支建立feature分支;

開發完成後,整理自己的commit,把無意義的commit進行合併;

準備在下一次迭代上線,整理完成後,合併到develop分支;

不準備在下一次迭代上線,整理完成後,push當前分支到遠端git倉庫,等待準備上線時,再合併到develop分支: git push origin feature/feature1:feature/feature1

合併到develop分支前,一定要經過本地測試!

確定版本上線計劃及上線

整體上,要有明確的上線計劃,確定每次上線哪些功能;

只有確認在下一次版本上線的feature才能合併到develop分支;

提交測試,修復測試反饋的bug

提交測試前,確保所有人的程式碼修改都已提交到develop分支;

基於develop分支,建立release分支: git checkout -b release/release1

釋出release/release1分支到測試環境,測試人員進行測試;

測試過程中發現的bug,直接在release分支進行修復並提交;

測試完成,確認上線,合併程式碼到master分支和develop分支,用release分支名打Tag,刪除release分支: git tag release.1.1.1 git branch -d release/release1

修復線上bug

基於master分支,建立hotfix分支 git checkout -b hotfix/hotfix1

修復完成後,finish hotfix,合併程式碼到master和develop分支;

情情說

相關文章