Git Flow 入門

  1. Git Flow 流程的簡單介紹
     1.1. Master和Develop分支
     1.2. Feature分支
     1.3. Release分支
     1.4. Hotfix分支
     1.5. 其餘指令
  2. 輕鬆實現git flow, 拋棄繁瑣的指令
     2.1. git-flow初始化
     2.2. Feature分支
     2.3. Release分支
     2.4. Hotfix分支
  3. 參考資料

Git Flow 流程的簡單介紹

Master和Develop分支

  • master-主分支,用於產品發佈
  • develop-開發分支,用於平常的開發

以上兩個分支都是惟一的,且無限長的git

# 當git創建一個庫之後
# 默認分支通常爲master
# 因此咱們只須要建立一個名爲develop的新分支
# 做爲咱們的開發分支

# 建立develop分支
git checkout -b develop master
# 把本地的內容推到遠程倉庫
git push -u origin develop
複製代碼

Feature分支

  • 用於平常的功能開發
  • 通常一個功能分支表明一個功能
  • 當一個功能開發完,合併到develop
繼承分支:develop
合併分支:develop
命名規則:任何名字除了master, develop, release-*, hotfix-*
複製代碼
# 建立feature分支 #

# 保證本地的develop是最新的
git checkout develop
git pull origin develop
# 從develop建立myfeature分支,並切換到myfeature分支
git checkout -b myfeature develop
# 以後你能夠在這個分支上commit新的feature

# 提交feature分支 #

# 保證本地的develop是最新的
git checkout develop
git pull origin develop
# 合併myfeature到develop分支
git merge --no-ff myfeature -m ""
# 刪除myfeature分支
git branch -d myfeature
# 推送develop到upstream
git push origin develop
複製代碼

上面合併的時候咱們用到了--no-ff, 做用是禁用git merge默認的快進式合併(fast forward merge)模式。github

在fast forward模式下被合併的分支全部的提交都會合並進主分支中,使得在提交歷史中很難區分哪些提交是重新的分支中合併進來的。bash

例如,在一個feature分支中有不少次提交記錄,當這個feature分支合併進了主分支,咱們將很難再找出哪些提交組成了以前的feature分支。post

禁用fast forward模式後,合併永遠會在主分支上生成一個新的提交對象。這樣咱們就能更輕鬆的區分各個分支的提交了。測試

下面是二者的對比圖: spa

No fast forward和默認模式的對比


Release分支

  • 當須要發佈新版本時使用
  • 主要用於測試
  • 可在此分支上直接開發功能,修復bug
  • 務必同時合併到develop和master
繼承分支:develop
合併分支:develop master
命名規則:release-*
複製代碼
# 建立release分支 #

git checkout -b release-1.2 develop
# 可選,用於更新某些本地文件來跟進版本變化
./bump-version.sh 1.2
git commit -a -m "Bumped version number to 1.2"

# 提交release分支 #

git checkout master
git merge --no-ff release-1.2 -m ""
# 給當前提交打上版本標籤
git tag -a 1.2 -m ""
git push
git push --tags
# 把release-1.2上的內容合併回develop
git checkout develop
git pull origin develop
git merge --no-ff release-1.2 -m ""
git push
# 刪除分支
git branch -d release-1.2
複製代碼

Hotfix分支

  • 用於修復線上的bug
  • 務必同時合併到develop和master
繼承分支:master
合併分支:develop master
命名規則:hotfix-*
複製代碼
# 建立hotfix分支 #

git checkout master
git pull origin master
git checkout -b hotfix-1.2.1 master
# 可選
./bump-version.sh 1.2.1
git commit -a -m "Bumped version number to 1.2.1"

# 提交hotfix分支 #

# 合併到master
git checkout master
git pull origin master
git merge --no-ff hotfix-1.2.1 -m ""
git tag -a 1.2.1 -m ""
git push
git push --tags
# 合併到develop
git checkout develop
git pull origin develop
git merge --no-ff hotfix-1.2.1 -m ""
git push
# 刪除分支
git branch -d hotfix-1.2.1
複製代碼

其餘指令

# 推送分支到upstream
git push -u origin some-branch
# 刪除upstream上的分支
git push origin --delete some-branch
複製代碼

輕鬆實現git flow, 拋棄繁瑣的指令

git-flow是一款可使整個git flow流程變得更加的便捷的插件,點這裏能夠查看官方的document。插件

安裝的方法這裏就不介紹了,詳細的安裝教程均可以在document裏找到。code


git-flow初始化

安裝完git-flow後,須要初始化本地庫來支持git-flow指令cdn

git flow init
複製代碼

Feature分支

# 建立feature分支
git flow feature start <name>

# 提交feature分支
git flow feature finish <name>
複製代碼

Release分支

# 建立release分支
git flow release start <name>

# 提交release分支
git flow release finish <name>
複製代碼

提交release分支時會自動打上tag。對象

git push --tags來推送tags到遠程倉庫。


Hotfix分支

# 建立hotfix分支
git flow hotfix start <name>

# 提交hotfix分支
git flow hotfix finish <name>
複製代碼

和release分支同樣,提交時也會自動打上tag。


參考資料

相關文章
相關標籤/搜索