命名規(guī)范參考下表:
1. 主分支master
首先篇梭,代碼庫應(yīng)該有且僅有一個(gè)主分支仿耽。所有提供給用戶使用的正式版本岩榆,都在這個(gè)主分支上發(fā)布色徘。Git主分支的名字恭金,默認(rèn)叫做master操禀。它是自動(dòng)建立的褂策,版本庫初始化以后,默認(rèn)就是在主分支在進(jìn)行開發(fā)颓屑。團(tuán)隊(duì)成員從主分支(master)獲得的都是處于可發(fā)布狀態(tài)的代碼斤寂。
2. 開發(fā)分支develop
日常開發(fā)應(yīng)該在另一條分支上完成。我們把開發(fā)用的分支揪惦,叫做develop分支遍搞。開發(fā)分支(develop)應(yīng)該總能夠獲得最新開發(fā)進(jìn)展的代碼。如果想正式對(duì)外發(fā)布器腋,就在master分支上溪猿,對(duì)develop分支進(jìn)行merge。下面介紹常用的幾個(gè)命令:
# 在master分支上創(chuàng)建develop分支
git checkout -b develop master
# 切換到master分支
git checkout master
# 對(duì)develop分支合并到當(dāng)前master分支
git merge --no-ff develop
3. 臨時(shí)分支
除了常設(shè)分支以外纫塌,還有一些臨時(shí)性分支诊县,用于應(yīng)對(duì)一些特定目的的版本開發(fā)。臨時(shí)性分支主要有三種:
- 功能(feature)分支
- 預(yù)發(fā)布(release)分支
- 修補(bǔ)bug(hotfix)分支
這三種分支都屬于臨時(shí)性需要措左,使用完以后依痊,最好刪除,使得代碼庫的常設(shè)分支始終只有master和develop怎披。
3.1 功能分支
feature分支是為了開發(fā)某種特定功能胸嘁,從develop分支上面分出來的。開發(fā)完成后凉逛,要并入develop性宏。功能分支的名字,可以采用feature-xxx的形式命名状飞。
# 從develop創(chuàng)建一個(gè)功能分支
git checkout -b feature-x develop
# 開發(fā)完成后毫胜,將功能分支合并到develop分支:
git checkout develop
git merge --no-ff feature-x
# 刪除feature分支
git branch -d feature-x
3.2 預(yù)發(fā)布分支
release分支是指發(fā)布正式版本之前(即合并到master分支之前),我們可能需要有一個(gè)預(yù)發(fā)布的版本進(jìn)行測試而從develop創(chuàng)建的分支昔瞧。預(yù)發(fā)布結(jié)束以后指蚁,必須合并進(jìn)develop和master分支。它的命名自晰,可以采用release-xxx的形式凝化。
# 創(chuàng)建一個(gè)預(yù)發(fā)布分支
git checkout -b release-x develop
# 確認(rèn)沒有問題后,合并到master分支
git checkout master
git merge --no-ff release-x
# 對(duì)合并生成的新節(jié)點(diǎn)酬荞,做一個(gè)標(biāo)簽
git tag -a 1.2
# 再合并到develop分支
git checkout develop
git merge --no-ff release-x
# 最后搓劫,刪除預(yù)發(fā)布分支
git branch -d release-x
3.3 bug修補(bǔ)分支
軟件正式發(fā)布以后瞧哟,難免會(huì)出現(xiàn)bug。這時(shí)就需要?jiǎng)?chuàng)建一個(gè)分支枪向,進(jìn)行bug修補(bǔ)勤揩。
修補(bǔ)bug分支是從Master分支上面分出來的。修補(bǔ)結(jié)束以后秘蛔,再合并進(jìn)master和develop分支陨亡。它的命名,可以采用hotfix-x的形式深员。
# 創(chuàng)建一個(gè)修補(bǔ)bug分支
git checkout -b hotfix-x master
# 修補(bǔ)結(jié)束后负蠕,合并到master分支
git checkout master
git merge --no-ff hotfix-x
git tag -a 0.1
# 再合并到develop分支
git checkout develop
git merge --no-ff hotfix-x
# 刪除"修補(bǔ)bug分支"
git branch -d hotfix-x
4. 總結(jié)
上面許多指令使用的--no-ff的意思是no-fast-farward的縮寫,使用該命令可以保持更多的版本演進(jìn)的細(xì)節(jié)倦畅。如果不使用該參數(shù)遮糖,默認(rèn)使用了fast-farword進(jìn)行merge。兩者的區(qū)別如下圖所示:
最后分享一下整體的分支管理策略圖示: