git-flow
初始化以上兩個分支都是惟一的,且無限長的git
# 當git創建一個庫之後
# 默認分支通常爲master
# 因此咱們只須要建立一個名爲develop的新分支
# 做爲咱們的開發分支
# 建立develop分支
git checkout -b develop master
# 把本地的內容推到遠程倉庫
git push -u origin 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
繼承分支: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
複製代碼
繼承分支: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流程變得更加的便捷的插件,點這裏能夠查看官方的document。插件
安裝的方法這裏就不介紹了,詳細的安裝教程均可以在document裏找到。code
git-flow
初始化安裝完git-flow
後,須要初始化本地庫來支持git-flow
指令cdn
git flow init
複製代碼
# 建立feature分支
git flow feature start <name>
# 提交feature分支
git flow feature finish <name>
複製代碼
# 建立release分支
git flow release start <name>
# 提交release分支
git flow release finish <name>
複製代碼
提交release分支時會自動打上tag。對象
用git push --tags
來推送tags到遠程倉庫。
# 建立hotfix分支
git flow hotfix start <name>
# 提交hotfix分支
git flow hotfix finish <name>
複製代碼
和release分支同樣,提交時也會自動打上tag。