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
