(文中圖片均來源於網絡)html
Git已經是代碼版本管理的標配,其分佈式、多分支功能讓人印象深入。git
當項目須要多人共同開發時,規範工做流程就變得愈來愈重要。合適的工做流程能讓多人協同開發更加順利和高效。github
目前主流的Git工做流程有三種:shell
三種工做流程各有優缺點,對於不一樣類型的項目有各自的用武之地。筆者開發Android項目時使用的是Git Flow,對此比較熟悉。其他兩種工做流程,筆者出於學習的目的,在文中談談本身的理解。bash
從分支分類開始,有如下幾類:網絡
git checkout -b develop master
git push origin develop
複製代碼
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
複製代碼
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
複製代碼
當線上版本有緊急問題須要修復,develop
分支還處於下一個版本的開發狀態,很差從開發分支分出修復分支,選擇從master
分出hotfix-*
分支來修復該緊急問題。工具
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相關工具的默認分支,能夠省去大量切換工做。新建諸如release
、production
分支做爲產品分支。
只有一個長期分支master
,很適合持續發佈的項目,如:網站,相比Git Flow 更簡單、易用。
git checkout -b bug47833 master
git commit
git checkout master
git merge --no-ff bug47833
git push origin master
複製代碼
只有一個主分支master
。該工做流程最大原則是「上游優先」,只有master
分支的代碼提交,才能應用到下游分支中。
在開發需求或修復問題時,可使用GitHub Flow方式從master
分支分出工做分支,開發完成後以合併請求合併到master
分支,當驗收經過時,就能夠合入到下游分支併發布了。
本文主要介紹了3種Git工做流程,其中重點介紹了Git Flow。目前筆者所在的團隊使用的工做流程相似於GitLab Flow,在這裏只是簡單的介紹,而GitHub Flow工做流程未真正實踐過,出如今文中是爲了豐富文章內容。
文中的Git工做流程並非所有,徹底能夠本身按需擴展或全新定義出適合項目的工做流程。