GitFlow入門

1-概述

學會使用 Git 的同時, 也得學會使用 GitFlow, GitFlow 是創建在 Git 的基礎之上, 對 Git 命令進行了一次封裝.html

大多數開發人員使用的 Git 時, 頂多有三個分支: 一個是 master, 一個是 develop, 再就是在 develop 分支上拉出來的開發分支, 或者就是直接在 master 分支上拉出一個分支進行開發.git

這樣開發比較快速, 對於小團隊來講, 已經知足了. 可是隨着團隊人數的增多, 項目越作越大, 就會出現各類各樣的問題, 首當其衝的就是代碼功能分佈雜亂.github

就像代碼須要代碼規範同樣, 代碼管理一樣須要一個清晰的流程和規範, 這就是 GitFlow.ubuntu

2-GitFLow分支介紹

一張圖讓你對 GitFlow 有一個認識:centos

GitFlow運行示意圖

下面是我對每一個分支的理解.bash

2.1-master 分支

這個分支就是生產分支, 只有 hotfix 分支和 release 分支的代碼能夠合併進來, 每一次合併都會打一個 tag.工具

2.2-develop 分支

這個分支是基於 master 建立的, 包含全部下一個 release 分支的代碼.測試

2.3-feature 分支

這個分支是從 develop 分支建立的, 主要用於開發新的功能, 若是功能要發佈了, 則合併到 develop 分支.代碼規範

2.4-release 分支

這個分支是基於 develop 分支建立的, 建立出 release 分支以後, 部署到測試環境, 測試人員進行測試, 若是有問題, 直接在 release 分支上進行修改, 而後合併到 develop 分支, 每一次修改都須要合併待 develop 分支.code

若是測試經過, 該分支的使命結束, 將 release 分支的代碼分別合併到 master 分支和 develop 分支.

2.5-hotfix 分支

若是 master 版本出現 bug 時, 從 master 上拉取一個 hotfix 分支, 完成 hotfix 後, 合併到 master 分支和 develop 分支.

3-GitFlow命令

簡單說, GitFlow 就是把平時咱們使用的 git 命令合併起來執行, 本質上能夠直接使用普通的 git 命令進行相似 gitflow 的分支管理.

3.1-初始化

使用 git flow init 在現有的 Git 項目中進行初始化, 若是遠端有 develop 分支, 須要將本地剛剛初始化的分支和遠端相關聯(git branch --set-upstream-to=origin/develop develop), 而後拉取遠端的代碼.

以下:

➜ gitflow git:(master) git flow init

Which branch should be used for bringing forth production releases?
   - master
Branch name for production releases: [master]
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []

執行完以後, 默認使用 master 做爲生產分支, 而後在本地建立一個 develop 分支並切換過去, 而後設置每一個特徵分支的前綴, 默認便可.

以後咱們將 develop 分支推上去(git push -u origin develop).

3.2-feature分支

# 建立一個 feature 分支
git flow feature start feature01

# 推送本地 feature 分支到遠端
git flow feature publish feature01

# 拉取遠端的 feature 分支到本地
git flow feature pull origin feature01
git flow feature track feature01

# 完成 feature 分支
git flow feature finish feature01

不管在哪一個分支上執行 start, 新建立的 feature 分支老是基於 develop 分支進行建立.

不管在哪一個分支上執行 finish, 命令執行結束後, feature 分支會被合併到 develop 分支, 而後 feature 分支會被自動刪除.

3.3-release分支

# 建立一個 release 分支, 後面的 base: 即提交記錄的 sha-1 hash 值, 這個值必須是 develop 分支下的
git flow release start release01 [base]

# 推送本地 release 分支到遠端
git flow release publish release01

# 拉取遠端的 release 分支到本地
git flow release pull origin release01
git flow release track release01

# 完成 release 分支
git flow release finish release01

不管在哪一個分支上執行 start, 新建立的 release 分支老是基於 develop 分支進行建立.

不管在哪一個分支上執行 finish, 命令執行結束後, release 分支會被合併到 develop 分支和 master 分支, 而後在 master 分支上打一個 tag, 最後 release 分支被刪除.

最後不要忘記 push tag(git push --tags).

3.4-hotfix分支

# 建立一個 hotfix 分支
git flow hotfix start hotfix01

# 完成一個 hotfix 分支
git flow hotfix finish hotfix01

不管在哪一個分支上執行 start, 新建立的 hotfix 分支老是基於 master 分支進行建立.

不管在哪一個分支上執行 finish, 命令執行結束後, hotfix 分支會被合併到 master 分支, 而後在 master 分支上打一個 tag, 而後 hotfix 分支又合併到了 develop 分支, 最後 hotfix 分支被刪除了.

最後不要忘記 push tag(git push --tags).

3.5-support分支

support 功能只是測試版本, 不建議使用.

3.6-tag

4-安裝GitFlow

4.1-Mac

brew install git-flow

4.2-CentOS

yum install -y epel-release
yum install -y gitflow

4.3-Ubuntu

apt-get install git-flow

5-客戶端工具

固然是 SourceTree.

並不推薦使用客戶端工具, 多敲鍵盤少用鼠標.

6-參考資料

  1. http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
  2. http://www.javashuo.com/article/p-secqxurb-hu.html
  3. https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/git-flow
相關文章
相關標籤/搜索