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