1. 程式人生 > 其它 >git分支管理規範

git分支管理規範

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