git flow學習筆記


Git flow 0.4

用法:
git flow <subcommand>

Available subcommands are:

init Initialize a new git repo with support for the branching model.
feature Manage your feature branches.
release Manage your release branches.
hotfix Manage your hotfix branches.
support Manage your support branches.
version Shows version information.

git

Git flow的分支類型

長期分支

master
用途: 穩定版本的分支,產品發佈的分支
位置: remote,local

develop
用途: 開發版本
位置: remote,local

github

短時間分支

feature
用途: 特性/功能開發
位置: local,remote*(能夠經過feature publish發佈到remote上,供團隊協做)
分支創建: 從develop分支創建,能夠指定起始點
分支合併: 合併回develop分支

release
用途: 版本發佈的準備分支
位置: local,remote*(能夠經過release publish發佈到remote上,供團隊協做)
分支創建: 從develop分支創建,能夠指定起始點
分支合併: 合併回develop和master分支

hotfix
用途: 緊急Bug修復
位置:local
分支創建: 從master創建分支
分支合併: 合併回master和develop

fetch

子命令

feature

用法:
git flow feature [list] [-v]

git flow feature start [-F] <name> [<base>]
git flow feature finish [-rFk] <name|nameprefix>
git flow feature publish <name>
git flow feature track <name>
git flow feature diff [<name|nameprefix>]
git flow feature rebase [-i] [<name|nameprefix>]
git flow feature checkout [<name|nameprefix>]
git flow feature pull <remote> [<name>]


spa

feature start

用法: git flow feature start [-F] <name> [<base>]
功能: 以指定的commit名稱(由base參數指定)建立一個feature分支
參數: -F 
'fetch from origin before performing local operation' (創建分支前先從origin下載數據) 默認爲false 
該參數在0.4版本有bug,不可用,能夠使用 git fetch -q orgin develop代替

name 
feature的名稱,對應的分支名稱爲feature/name

base 
創建feature的start point,默認爲develop分支

等價的Git 命令:
1. git fetch -q origin develop //當 -F 設置的時候執行,只是更新.git中的remote內容,不作merge操做
2. 檢查本地的develop分支和遠程的develop分支是否一致,即refs/develop 和 refs/remote/origin/develop(建議先執行git pull origin develop或者git fetch origin develop)
3. git checkout -b feature/name develop //創建分支

例子:
git flow feature start story_1


orm

feature publish

用法: git flow feature publish <name>
功能: 將一個本地的feature分支push到遠程的倉庫中,該命令可用於與團隊其餘成員合做開發或者備份本身的代碼
參數: name
本地feature的名稱

等價的Git命令:
1. 檢查本地的工做目錄及分支
2. git fetch -q origin
3. git push origin feature///name://refs/heads/feature///name//
4. git fetch -q origin
5. git checkout feature/name 例子:
git feature publish story_1

開發

feature track

用法: git flow feature track <name>
功能: 將由feature publish發佈的feature分支從遠程倉庫下載到本地,並創建同名分支
參數: name
遠程feature的名稱,對應feature publish的名稱

等價的Git命令:
1. 檢查本地的工做目錄是否"乾淨";檢查分支是否已經存在,若是已經存在,則報錯退出
2. git fetch -q origin 
3. git checkout -b name origin/feature/name 例子:
git feature track name rem

feature pull

用法: git flow feature pull <remote> [<name>]
功能: 將由feature publish發佈的feature分支從遠程倉庫下載到本地,並創建同名分支;若是本地已經有同名分支,則對其執行pull操做
參數: name
遠程feature的名稱,對應feature publish的名稱

等價的Git命令:
a. 若是本地已有name分支
1. git pull -q origin feature/name

b. 若是本地沒有name分支
1. git fetch -q origin feature/name
2. git branch --no-track feature/name
3. git checkout -q feature/name 例子:
git flow feature pull origin story_1

get

feature finish

用法: git flow feature finish [-rFk] <name|nameprefix>
功能: 完成由name指定的feature分支的開發,將其合併到本地的develop分支,合併成功後刪除該分支
參數: -r 
在合併到develop分子時,使用rebase機制,而不是merge

-F
在執行finish操做前,先執行fetch,從遠程倉庫下載更新

-k
執行完finsh後,保留feature分支,即不刪除分支

name
feature的名稱,對應feature start的名稱

等價的Git命令:
1. git fetch -q origin feature/name #當參數中設置了-F時
2. git flow feature rebase name develop #當參數中設置了-r時
3. git checkout develop
4. git merge feature/name #根據develop分支和feature/name分支之間的提交的個數決定是否設置--no--ff
5. #若是設置了-F參數,則刪除遠程的分支 git push origin :ref/heads/feature/name 
6. #若是沒有設置-k參數,則刪除本地的分支

例子:
git flow feature finish story_1


團隊協作

feature rebase

用法: git flow feature rebase [-i] [<name|nameprefix>]
功能: 以develop分支做爲upstream,對指定的feature分支執行rebase操做
參數: -i 
等價與rebase -i

name
feature的名稱

等價的Git命令:
1. git checkout -q feature/name
2. git rebase develop

例子:
git flow feature rebase -i story_1

產品

release

用法:
git flow release [list] [-v]
git flow release start [-F] <version>
git flow release finish [-Fsumpk] <version>
git flow release publish <name>
git flow release track <name>

release start

用法: git flow release start [-F] <version> [<base>]
功能: 從develop分支指定的起始點(可選,默認爲HEAD)創建版本發佈的分支
參數: version
版本號

base
創建分支的起始點,可選參數,默認爲develop HEAD

等價的Git命令:
1. git checkout -b release/version develop

例子:
git flow release start v0.1

release publish

用法: git flow release publish <name>
功能: 將release分支發佈的遠程倉庫,供團隊協做
參數: name
release名稱,與start 中的version相對應

等價的Git命令:
1. git fetch -q origin
2. git push origin release/name:refs/heads/release/name 例子:
git flow release publish v0.1

release track

用法: git flow release track <name>
功能: 將由 publish發佈的feature分支從遠程倉庫下載到本地,並創建同名分支,供團隊協做
參數: name
遠程feature的名稱,對應feature publish的名稱

等價的Git命令:
1. git fetch -q origin
2. git checkout -b release/name origin/release/name 例子:
git flow release track v0.1


release finish

用法: git flow release finish [-Fsumpk] <version>
功能: 完成由version指定的release分支的開發,將其合併到develop和master分支,併爲該分支建立一個tag
參數: -F 
執行操做前先執行fetch

-s
對新建的tag簽名

-u
簽名使用的GPG-key

-m
使用指定的註釋做爲tag的註釋

-p
當操做結束後,push到遠程倉庫中

-k
保留分支

-n
不建立tag

version
版本號

等價的Git命令:
1. 若是設置了 -F 參數,下載更新
1.1 git fetch -q origin master
1.2 git fetch -q origin develop

2. 合併回master分支
2.1 git checkout master
2.2 git merge --no-ff release/version

3. 若是沒有設置 -n 參數,建立tag
3.1 git tag 

4. 合併回develop分支
4.1 git checkout develop
4.2 git merge --no-ff release/version

5. 若是沒有設置 -k 參數
5.1 git branch -d release/version

6. 若是設置 -p 參數
6.1 git push origin develop
6.2 git push origin master
6.3 git push --tags origin
6.4 git push orign :release/version #刪除遠程倉庫中的release分支 例子:
git flow release finish -p v0.1

相關文章
相關標籤/搜索