gitflow

Git Flow

就像代碼須要代碼規範同樣,代碼管理一樣須要一個清晰的流程和規範git

Vincent Driessen 同窗爲了解決這個問題提出了 A Successful Git Branching Modelgithub

下面是Git Flow的流程圖bash

上面的圖你理解不了? 不要緊,這不是你的錯,我以爲這張圖自己有點問題,這張圖應該左轉90度,你們應該就很用以理解了。工具

Git Flow經常使用的分支

  • Production 分支

也就是咱們常常使用的Master分支,這個分支最近發佈到生產環境的代碼,最近發佈的Release, 這個分支只能從其餘分支合併,不能在這個分支直接修改post

  • Develop 分支

這個分支是咱們是咱們的主開發分支,包含全部要發佈到下一個Release的代碼,這個主要合併與其餘分支,好比Feature分支測試

  • Feature 分支

這個分支主要是用來開發一個新的功能,一旦開發完成,咱們合併回Develop分支進入下一個Releasespa

  • Release分支

當你須要一個發佈一個新Release的時候,咱們基於Develop分支建立一個Release分支,完成Release後,咱們合併到Master和Develop分支代碼規範

  • Hotfix分支

當咱們在Production發現新的Bug時候,咱們須要建立一個Hotfix, 完成Hotfix後,咱們合併回Master和Develop分支,因此Hotfix的改動會進入下一個Releasecode

Git Flow如何工做

初始分支

全部在Master分支上的Commit應該Tagblog

Feature 分支

分支名 feature/*

Feature分支作完後,必須合併回Develop分支, 合併完分支後通常會刪點這個Feature分支,可是咱們也能夠保留

Release分支

分支名 release/*

Release分支基於Develop分支建立,打完Release分以後,咱們能夠在這個Release分支上測試,修改Bug等。同時,其它開發人員能夠基於開發新的Feature (記住:一旦打了Release分支以後不要從Develop分支上合併新的改動到Release分支)

發佈Release分支時,合併Release到Master和Develop, 同時在Master分支上打個Tag記住Release版本號,而後能夠刪除Release分支了。

維護分支 Hotfix

分支名 hotfix/*

hotfix分支基於Master分支建立,開發完後須要合併回Master和Develop分支,同時在Master上打一個tag

Git Flow代碼示例

a. 建立develop分支

git branch develop
git push -u origin develop

b. 開始新Feature開發

git checkout -b some-feature develop
# Optionally, push branch to origin:
git push -u origin some-feature    

# 作一些改動    
git status
git add some-file
git commit

c. 完成Feature

git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop

git branch -d some-feature

# If you pushed branch to origin:
git push origin --delete some-feature

d. 開始Relase

git checkout -b release-0.1.0 develop

# Optional: Bump version number, commit
# Prepare release, commit

e. 完成Release

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

# If you pushed branch to origin:
git push origin --delete release-0.1.0   


git tag -a v0.1.0 master
git push --tags

f. 開始Hotfix

git checkout -b hotfix-0.1.1 master

g. 完成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 tag -a v0.1.1 master
git push --tags

Git flow工具

實際上,當你理解了上面的流程後,你徹底不用使用工具,可是實際上咱們大部分人不少命令就是記不住呀,流程就是記不住呀,腫麼辦呢?

總有聰明的人創造好的工具給你們用, 那就是Git flow script.

安裝

  • OS X

brew install git-flow

  • Linux

apt-get install git-flow

  • Windows

wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

使用

  • 初始化: git flow init

  • 開始新Feature: git flow feature start MYFEATURE

  • Publish一個Feature(也就是push到遠程): git flow feature publish MYFEATURE

  • 獲取Publish的Feature: git flow feature pull origin MYFEATURE

  • 完成一個Feature: git flow feature finish MYFEATURE

  • 開始一個Release: git flow release start RELEASE [BASE]

  • Publish一個Release: git flow release publish RELEASE
  • 發佈Release: git flow release finish RELEASE
    別忘了git push --tags

  • 開始一個Hotfix: git flow hotfix start VERSION [BASENAME]

  • 發佈一個Hotfix: git flow hotfix finish VERSION

相關文章
相關標籤/搜索