初識 Git 工做流程

(文中圖片均來源於網絡)html

Git

image

Git已經是代碼版本管理的標配,其分佈式、多分支功能讓人印象深入。git

Git工做流程(Git Workflow)

github_branching.png

當項目須要多人共同開發時,規範工做流程就變得愈來愈重要。合適的工做流程能讓多人協同開發更加順利和高效。github

目前主流的Git工做流程有三種:shell

三種工做流程各有優缺點,對於不一樣類型的項目有各自的用武之地。筆者開發Android項目時使用的是Git Flow,對此比較熟悉。其他兩種工做流程,筆者出於學習的目的,在文中談談本身的理解。bash

Git Flow

從分支分類開始,有如下幾類:網絡

長期分支、主要分支

  • master(主分支):穩定可發佈、產品線
  • develop(開發分支):處於開發狀態

image

git checkout -b develop master
git push origin develop
複製代碼

短時間分支、支持性分支

  • feature(功能分支)
  • release(發佈分支)
  • hotfix(修復分支)

feature 功能分支

image

git checkout -b feature-main develop
# git commit 1
# git commit 2
# git commit 3
git checkout develop
git merge --no-ff feature-main
git branch -d feature-main
git push origin develop
複製代碼
--no-ff

image

release 發佈分支

image

git checkout -b release-1.0 develop
# 可能在該階段再分出 fix-* 分支來修復發佈前的問題,會有git commit和 git merge 操做。
複製代碼

發佈分支已測試完畢,問題已修復,可發佈時,將代碼同步到master分支中。併發

git checkout master
git merge --no-ff release-1.0
git tag -a v1.0
git push origin master
git push origin v1.0
複製代碼

若在發佈分支中有修復問題,那麼這些提交也要同步到develop分支中。分佈式

git checkout develop
git merge --no-ff release-1.0
git push origin develop
複製代碼

刪除發佈分支。ide

git branch -d release-1.0
複製代碼

hotfix 修復分支

當線上版本有緊急問題須要修復,develop分支還處於下一個版本的開發狀態,很差從開發分支分出修復分支,選擇從master分出hotfix-*分支來修復該緊急問題。工具

image

git checkout -b hotfix-1.2.1 master
git commit -a -m "Bumped version number to 1.2.1"
複製代碼

該緊急問題被修復,並驗收經過時發佈修復版本,同步代碼到master分支。

git checkout master
git merge --no-ff hotfix-1.2.1
git tag -a v1.2.1
git push origin master
git push origin v1.2.1
複製代碼

接着將代碼同步到develop分支。

git checkout develop
git merge --no-ff hotfix-1.2.1
git push origin develop
複製代碼

刪除修復分支。

git branch -d hotfix-1.2.1
複製代碼

實際操做中,會將master做爲開發分支,由於它幾乎是Git相關工具的默認分支,能夠省去大量切換工做。新建諸如releaseproduction分支做爲產品分支。

GitHub Flow

image

只有一個長期分支master,很適合持續發佈的項目,如:網站,相比Git Flow 更簡單、易用。

image

git checkout -b bug47833 master
git commit
git checkout master
git merge --no-ff bug47833
git push origin master
複製代碼

GitLab Flow

只有一個主分支master。該工做流程最大原則是「上游優先」,只有master分支的代碼提交,才能應用到下游分支中。

在開發需求或修復問題時,可使用GitHub Flow方式從master分支分出工做分支,開發完成後以合併請求合併到master分支,當驗收經過時,就能夠合入到下游分支併發布了。

持續發佈

image

版本發佈

image

結束語

本文主要介紹了3種Git工做流程,其中重點介紹了Git Flow。目前筆者所在的團隊使用的工做流程相似於GitLab Flow,在這裏只是簡單的介紹,而GitHub Flow工做流程未真正實踐過,出如今文中是爲了豐富文章內容。

文中的Git工做流程並非所有,徹底能夠本身按需擴展或全新定義出適合項目的工做流程。

參考資料

相關文章
相關標籤/搜索