研發團隊GIT開發流程新人學習指南

FullSizeRende

本文定位於爲使用GIT標準分支開發流程的開發團隊新人提供一份參考指南,其中的內容都是咱們公司在研發團隊初創時所遵循的一些開發流程標準,通過近一年的實踐,雖然說還有不少不足,可是隨着團隊經驗的豐富和人員的擴張,我會適時地更新本文,分享咱們在使用GIT開發流程中遇到的問題和解決方案。html

本文將會持續修正和更新,最新內容請參考個人 GITHUB 上的 程序猿成長計劃 項目,歡迎 Star,更多精彩內容請 follow megit

分支流程說明

簡介

項目中長期存在的兩個分支github

  • master:主分支,負責記錄上線版本的迭代,該分支代碼與線上代碼是徹底一致的。vim

  • develop:開發分支,該分支記錄相對穩定的版本,全部的feature分支和bugfix分支都從該分支建立。windows

其它分支爲短時間分支,其完成功能開發以後須要刪除併發

  • feature/*:特性(功能)分支,用於開發新的功能,不一樣的功能建立不一樣的功能分支,功能分支開發完成並自測經過以後,須要合併到 develop 分支,以後刪除該分支。學習

  • bugfix/*:bug修復分支,用於修復不緊急的bug,普通bug均須要建立bugfix分支開發,開發完成自測沒問題後合併到 develop 分支後,刪除該分支。測試

  • release/*:發佈分支,用於代碼上線準備,該分支從develop分支建立,建立以後由測試同窗發佈到測試環境進行測試,測試過程當中發現bug須要開發人員在該release分支上進行bug修復,全部bug修復完後,在上線以前,須要合併該release分支到master分支和develop分支。spa

  • hotfix/*:緊急bug修復分支,該分支只有在緊急狀況下使用,從master分支建立,用於緊急修復線上bug,修復完成後,須要合併該分支到master分支以便上線,同時須要再合併到develop分支。插件

必讀文章

團隊中的 Git 實踐
Git 在團隊中的最佳實踐--如何正確使用Git Flow

分支命令規範

特性(功能)分支

功能分支的分支名稱應該爲可以準確描述該功能的英文簡要表述

feature/分支名稱

例如,開發的功能爲 新增商品到物料庫,則能夠建立名稱爲 feature/material-add的分支。

bug修復分支、緊急bug修復分支

bug修復分支的分支名稱能夠爲Jira中bug代碼或者是描述該bug的英文簡稱

bugfix/分支名稱
hotfix/分支名稱

好比,修復的bug在jira中代號爲MATERIAL-1,則能夠建立一個名爲bugfix/MATERIAL-1的分支。

release分支

release分支爲預發佈分支,命名爲本次發佈的主要功能英文簡稱

release/分支名稱

好比,本次上線物料庫新增的功能,則分支名稱能夠爲release/material-add

經常使用操做命令簡介

基本操做

基本命令這裏就很少說了,基本跟之前同樣,惟一的區別是注意分支是從哪裏拉去的以及分支的命名規範。涉及到的命令主要包含如下,你們本身學習:

  • git commit

  • git add [--all]

  • git push

  • git pull

  • git branch [-d]

  • git merge

  • git cherry-pick

  • git checkout [-b] BRANCH_NAME

  • git stash

分支操做參考 Git經常使用操做-分支管理

使用git flow簡化操做

git flow是git的一個插件,能夠極大程度的簡化執行git標準分支流程的操做,能夠在gitflow-avh安裝。

若是是windows下經過安裝包安裝的git,則該插件默認已經包含,能夠直接使用。

初始化

使用git flow init初始化項目

$ git flow init

Which branch should be used for bringing forth production releases?
   - develop
   - feature-fulltext
   - feature-vender
   - master
Branch name for production releases: [master]

Which branch should be used for integration of the "next release"?
   - develop
   - feature-fulltext
   - feature-vender
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
Hooks and filters directory? [/Users/mylxsw/codes/work/e-business-3.0/.git/hooks]

功能分支

git flow feature
git flow feature start <name>
git flow feature finish <name>
git flow feature delete <name>

git flow feature publish <name>
git flow feature track <name>

功能分支使用例子:

$ git flow feature start material-add
Switched to a new branch 'feature/material-add'

Summary of actions:
- A new branch 'feature/material-add' was created, based on 'develop'
- You are now on branch 'feature/material-add'

Now, start committing on your feature. When done, use:

     git flow feature finish material-add

$ git status
On branch feature/material-add
nothing to commit, working directory clean
$ git flow feature publish
Total 0 (delta 0), reused 0 (delta 0)
To http://dev.oss.yunsom.cn:801/yunsom/e-business-3.0.git
 * [new branch]      feature/material-add -> feature/material-add
Branch feature/material-add set up to track remote branch feature/material-add from origin.
Already on 'feature/material-add'
Your branch is up-to-date with 'origin/feature/material-add'.

Summary of actions:
- The remote branch 'feature/material-add' was created or updated
- The local branch 'feature/material-add' was configured to track the remote branch
- You are now on branch 'feature/material-add'

$ vim README.md
$ git add --all
$ git commit -m "modify readme file "
[feature/material-add 7235bd4] modify readme file
 1 file changed, 1 insertion(+), 2 deletions(-)
$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 303 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To http://dev.oss.yunsom.cn:801/yunsom/e-business-3.0.git
   0d4fb8f..7235bd4  feature/material-add -> feature/material-add
$ git flow feature finish
Switched to branch 'develop'
Your branch is up-to-date with 'origin/develop'.
Updating 0d4fb8f..7235bd4
Fast-forward
 README.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
To http://dev.oss.yunsom.cn:801/yunsom/e-business-3.0.git
 - [deleted]         feature/material-add
Deleted branch feature/material-add (was 7235bd4).

Summary of actions:
- The feature branch 'feature/material-add' was merged into 'develop'
- Feature branch 'feature/material-add' has been locally deleted; it has been remotely deleted from 'origin'
- You are now on branch 'develop'

$ git branch
* develop
  feature-fulltext
  feature-vender
  master

預發佈分支

git flow release
git flow release start <release> [<base>]
git flow release finish <release>
git flow release delete <release>

hotfix分支

git flow hotfix
git flow hotfix start <release> [<base>]
git flow hotfix finish <release>
git flow hotfix delete <release>

git-flow 備忘清單

參考git-flow 備忘清單

總結

若是上面內容太多記不住,也沒有關係,做爲開發人員,剛開始的時候只要知道如下幾點就足夠了,其它的能夠在碰到的時候再深刻學習:

  • 全部的新功能開發,bug修復(非緊急)都要從develop分支拉取新的分支進行開發,開發完成自測沒有問題再合併到develop分支

  • release分支發佈到測試環境,由開發人員建立release分支(須要測試人員提出需求)併發布到測試環境,若是測試過程當中發現bug,須要開發人員track到該release分支修復bug,上線前須要測試人員提交merge requestmaster分支,準備上線,同時須要合併回develop分支。

  • 只有緊急狀況下才容許從master上拉取hotfix分支,hotfix分支須要最終同時合併到developmaster分支(共兩次merge操做)

  • 除了masterdevelop分支,其它分支在開發完成後都要刪除

本文將會持續修正和更新,最新內容請參考個人 GITHUB 上的 程序猿成長計劃 項目,歡迎 Star,更多精彩內容請 follow me

相關文章
相關標籤/搜索