大廠git分支管理規范:gitflow規范指南


1. Git Flow 原理介紹

在使用 Git 的過程中如果沒有清晰流程和規划,否則,每個人都提交一堆雜亂無章的 commit,項
目很快就會變得難以協調和維護。

Git 版本管理同樣需要一個清晰的流程和規范,Vincent Driessen 為了解決這個問題提出了 A
Successful Git Branching Model

以下是基於 Vincent Driessen 提出的 Git Flow 流程圖:

2. Git 的常用分支介紹

2.1 Production 分支

也就是我們經常使用的 Master 分支,這個分支最近發布到生產環境的代碼,最近發布的
Release, 這個分支只能從其他分支合並,不能在這個分支直接修改。

2.2 Develop 分支

這個分支是我們是我們的主開發分支,包含所有要發布到下一個 Release 的代碼,這個主要合
並與其他分支,比如 Feature 分支。

2.3 Feature 分支

這個分支主要是用來開發一個新的功能,一旦開發完成,我們合並回 Develop 分支進入下一個
Release。

2.4 Release分支

當你需要一個發布一個新 Release 的時候,我們基於 Develop 分支創建一個 Release 分支,完
成 Release 后,我們合並到 Master 和 Develop 分支。

2.5 Hotfix分支

當我們在 Production 發現新的 Bug 時候,我們需要創建一個 Hotfix, 完成 Hotfix 后,我們合
並回 Master 和 Develop 分支,所以 Hotfix 的改動會進入下一個 Release。

3. Git Flow 各分支操作原理示意

3.1 Master/Develop 分支

所有在 Master 分支上的 Commit 應該打上 Tag,一般情況下 Master 不存在 Commit,Develop 分
支基於 Master 分支創建。

3.2 Feature 分支

Feature 分支做完后,必須合並回 Develop 分支, 合並完分支后一般會刪點這個 Feature 分支,
畢竟保留下來意義也不大。

3.3 Release 分支

Release 分支基於 Develop 分支創建,打完 Release 分支之后,我們可以在這個 Release 分支
上測試,修改 Bug 等。同時,其它開發人員可以基於 Develop 分支新建 Feature (記住:一旦打了
Release 分支之后不要從 Develop 分支上合並新的改動到 Release 分支)發布 Release 分支時,合並
Release 到 Master 和 Develop, 同時在 Master 分支上打個 Tag 記住 Release 版本號,然后可以刪
除 Release 分支了。

3.4 Hotfix 分支

hotfix 分支基於 Master 分支創建,開發完后需要合並回 Master 和 Develop 分支,同時在
Master 上打一個 tag。

4. Git Flow 命令示例

4.1 Develop相關

  • 創建 develop
    git branch develop
    git push -u origin develop

4.2 Feature相關

  • 開始 Feature
    通過 develop 新建 feaeure 分支
    git checkout -b feature develop
    或者, 推送至遠程服務器:
    git push -u origin feature
    修改 md 文件
    git status
    git add .
    git commit
  • 完成 Feature
    git pull origin develop
    git checkout develop
    --no-ff:不使用 fast-forward 方式合並,保留分支的 commit 歷史
    --squash:使用 squash 方式合並,把多次分支 commit 歷史壓縮為一次
    git merge --no-ff feature
    git push origin develop
    git branch -d some-feature
    如果需要刪除遠程 feature 分支:
    git push origin --delete feature

4.3 Release相關

  • 開始 Feature
    git checkout -b release-0.1.0 develop
  • 完成 Feature
    git checkout master
    git merge --no-ff release-0.1.0
    git push
    git checkout develop
    git merge --no-ff release-0.1.0
    git push
    git branch -d release-0.1.0
    git push origin --delete release-0.1.0
    合並 master/develop 分支之后,打上 tag
    git tag -a v0.1.0 master
    git push --tags

4.4 Hotfix相關

  • 開始 Hotfix
    git checkout -b hotfix-0.1.1 master
  • 完成 Hotfix
    git checkout master
    git merge --no-ff hotfix-0.1.1
    git push
    git checkout develop
    git merge --no-ff hotfix-0.1.1
    git push
    git branch -d hotfix-0.1.1
    git push origin --delete hotfix-0.1.1
    git tag -a v0.1.1 master
    git push --tags


免責聲明!

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



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