Git Flow 安裝使用簡述

簡介

工具Git-flow是按照Vincent Driessen的branch 模型,實現的一個高層次(級別)的git倉庫操作擴展集合。
在git-flow中,一切被劃分爲分支。 當你開始一個新特性的時候,你會基於develop分離出一個新的分支。 如果你在進行hotfix, 那麼你是從master上分離的.
使用git-flow模型,在於明白每個分支是從哪個分支分離出來,最終應該合併到哪些分支去。

Mac中安裝

  • 使用Homebrew安裝
    brew install git-flow

  • 使用MacPorts安裝
    port install git-flow

  • wget

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

Git Flow工作流程圖

Git Flow工作流程圖

Git Flow常用的分支

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

  • Develop 分支
    這個分支是我們是我們的主開發分支,包含所有要發佈到下一個Release的代碼,這個主要合併與其他分支,比如Feature分支

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

  • Release分支
    當你需要一個發佈一個新Release的時候,我們基於Develop分支創建一個Release分支,完成Release後,我們合併到Master和Develop分支

  • Hotfix分支
    當我們在Production發現新的Bug時候,我們需要創建一個Hotfix, 完成Hotfix後,我們合併回Master和Develop分支,所以Hotfix的改動會進入下一個Release

各分支詳解

  • Master 分支

    所有在Master分支上的Commit應該Tag

    Master分支


  • Feature 分支

    Feature分支做完後,必須合併回Develop分支, 合併完分支後一般會刪點這個Feature分支,但是我們也可以保留

    Feature 分支


  • Release 分支

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

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

    Release 分支


  • 維護分支 Hotfix
    hotfix分支基於Master分支創建,開發完後需要合併回Master和Develop分支,同時在Master上打一個tag

    維護分支 Hotfix

Git Flow代碼示例

  • 創建develop分支
git branch develop
git push -u origin develop
  • 開始新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
  • 完成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
  • 開始Relase
git checkout -b release-0.1.0 develop

# Optional: Bump version number, commit
# Prepare release, commit
  • 完成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
  • 開始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 tag -a v0.1.1 master
git push --tags

常用命令綜述

  • 初始化: 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
發佈了170 篇原創文章 · 獲贊 56 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章