從一個前端項目實踐 Git flow 的流程與參考


Git flow 出自 A successful Git branching model,這里使用了一個前端項目配合本文稿實施了 git flow 並記錄流程作出示例和參考,對 hotfix 與持續部署略有提及,本意是用作公司內部的技術安利。
所用源碼及文檔本身見於 github jusfr/HelloGitflow

前言

Gitflow 是一種 git 分支管理工具——說是思想也不為過,它使用既定策略區分和管理開發、測試、生產環境的代碼版本,對測試與持續集成友好,與敏捷、迭代的思路一致。

1 准備工作

1.1 創建空白目錄

mkdir HelloGitflow
cd HelloGitflow

1.2 開始當前目錄工作,示例創建和保存一個 index.html

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <div></div>
</body>
</html>
git add index.html
git commit -m "init commit"

2 Git flow init

git flow init

這里使用了默認配置,一路 next

3 一個完整的開發周期

3.1 任務拆解,示例添加了分支 about 和 navigation

git flow feature start about
git flow feature start navigation

3.1

任務拆解相當於 story 認領,實際開發中的步驟更加繁冗。

3.2.1 about 分支創建了一個 about.html

git checkout feature/about
# more work to do
git add about.html
git commit -m "add about.html"

3.2.1

3.2.2 navigation 分支創建了一個 nav.html

git checkout feature/navigation
# more work to do
git add nav.html
git commit -m "add nav.html"

3.2.2

3.3 開始合並分支

3.3.1 合並 about

git flow feature finish about

3.3.1

3.3.2 合並 navigation,存在 merge 過程

git flow feature finish navigation

3.3.2

3.4 版本發布

3.4.1 當 feature 積累數量達到可以進行版本發布時,開始進行 release 發布

git flow release start v0.1

3.4.1

3.4.2 部分內容需要修改,在這里為各頁面添加了 title

git add index.html about.html nav.html
git commit -m "add title for each page"

3.4.2

3.4.3 結束當前 release 分支

# git push 
git flow release finish v0.1

3.4.3

4 連續的開發周期

我們開始在遠程分支上工作,可以在結束分支前先將其 push 到遠程分支上避免未在本地保留的情況

git remote add github https://github.com/jusfr/HelloGitflow.git
git push github --all

4.1

雖然開出來很多分支,但是可以觀察到 master 和合並了兩次,且分別被標記為 v0.1 和 v0.2

4.2

不考慮測試等情況,標記 v0.1 和 v0.2 的 master 版本或者 release/v0.1 和 release/v0.2 都是可以部署的版本。

5 線上的 bug 修復

現在已經在 v0.2 基礎上進行 account 和 react 的分支開發,但是發現線上的 v0.2 版本需要立即修復的問題,分支狀態

5.1

開啟 hotfix/v0.2.1 來修復這個問題

 git flow hotfix start v0.2.1

在 hotfix/v0.2.1 的視角來看,它是從最近的 mater 分支checkout 下來的,所以對正在進行的 account 和 react 無影響

5.2

以全局視角來看,hotfix/v0.2.1 與 account 和 react 確實沒有交集

5.3

現在問題修復,合並 hotfix/v0.2.1

git flow hotfix finish 'v0.2.1'

當然仍然可以先 push 到遠程分支,可以看到進行了若干步操作

  1. 合並 hotfix/v0.2.1 到 master 分支,master 分支被打上 v0.2.1 的 tag
  2. 合並 master 到 develop 分支。

在第2步中,如果 develop 有過變更,比如有過 feature 合並,那么可能存在沖突需要解決

5.4

在此示例中, master 分別被打上了 v0.1, v0.2, v0.2.1 標記,這對基於 master 的持續部署非常友好:可以快速在這些版本中部署與回滾,而不用關心存在多少變更與分支等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM