首先列一下我所看到的git分支管理:

其中:中間的Origin代表的是遠(yuǎn)程分支,Native代表的是程序猿自己本地的分支。
這種常見的分支管理方式很普遍,但是同樣,我認(rèn)為也沒有用到點(diǎn)上,是處于最低端的,git的用法可不僅僅在于這些。
首先,我先繪制一下我所說的相對(duì)標(biāo)準(zhǔn)的git分支管理方案:

接下來我會(huì)以騰訊工蜂系統(tǒng)對(duì)以上步驟詳細(xì)解讀一下(Origin代表的依舊是遠(yuǎn)程分支,Native代表的依舊是程序猿自己本地的分支):
- 步驟1:基于master檢出遠(yuǎn)程分支的dev.1.0分支,這個(gè)dev.1.0為1.0版本的總分支(這個(gè)比較簡單,略過)
- 步驟2:主管對(duì)遠(yuǎn)程分支的dev.1.0進(jìn)行加鎖,如下圖:
騰訊工蜂系統(tǒng)某一分支頁面
其中:點(diǎn)擊左1紅色框可選擇某一遠(yuǎn)程分支,左2紅色框?yàn)楫?dāng)前的分支(dev.1.6.2),左3紅色框?yàn)榧渔i按鈕。
點(diǎn)擊左3紅色框的加鎖,可以看到:

點(diǎn)擊底部綠色“創(chuàng)建鎖”即為創(chuàng)建鎖成功。(看下上圖對(duì)于鎖的描述與目的,這是很重要的思想)
步驟3:基于遠(yuǎn)程分支的1.0總分支,創(chuàng)建屬于自己的遠(yuǎn)程分支,之前的規(guī)則為dev.1.0.程序猿名字簡寫或全拼
步驟4:團(tuán)隊(duì)下的程序猿將自己的遠(yuǎn)程檢出到本地
步驟5:提交自己代碼到遠(yuǎn)程分支(直接push,沒必要執(zhí)行pull等操作)
-
步驟6:因?yàn)椴襟E2加鎖的緣故,并不是所有人都有對(duì)dev.1.0的修改權(quán)限,所以在git地址上,創(chuàng)建一個(gè)merge請(qǐng)求,目的是將自己遠(yuǎn)程分支上的代碼合并到dev.1.0這個(gè)版本總分支上,同時(shí)艾特同組人員進(jìn)行代碼審核,如下圖:
創(chuàng)建merge請(qǐng)求頁面
點(diǎn)擊左側(cè)紅色框,后再點(diǎn)擊右側(cè)紅色框,則如下圖:
選擇源分支和目的分支(注:當(dāng)前是以dev.1.7.0.lc為源分支,目的分支是dev.1.5,忽略這個(gè)細(xì)節(jié))
點(diǎn)擊左下角的“比較兩分支”,若有未merge的代碼,則會(huì)跳轉(zhuǎn)到如下頁面(這個(gè)頁面數(shù)據(jù)較多,以下三張圖片連起來則為當(dāng)前頁面的全部功能):



鑒于代碼安全方面的考慮,就不截圖代碼“變更”記錄了。
- 步驟7:在Origin:dev.1.0分支上打包,提交審核之后,蘋果審核通過之后,Origin:dev.1.0再創(chuàng)建一個(gè)merge請(qǐng)求(參考步驟6),將Origin:dev.1.0代碼合并到master。這一步驟是為了防止審核不通過,導(dǎo)致master代碼與app store的功能不一致。
最后說下這套分支方案的優(yōu)點(diǎn):
高效性。很多人會(huì)疑問:這套方案看起來復(fù)雜,哪來的高效性?其實(shí)不然。原因在于步驟3和步驟4的存在,我只關(guān)心我自己的功能,其他人提交了什么我不管。如果按照文章開始的那套分支方案,其他人提交了代碼,我在提交時(shí),大概率上還要拉取遠(yuǎn)程分支,最終會(huì)導(dǎo)致再次編譯,這點(diǎn)我是難以忍受。項(xiàng)目大了,人員多了,耗費(fèi)的時(shí)間會(huì)翻倍增長。
流程規(guī)范。包含了git相關(guān)的所有功能,比如遠(yuǎn)程分支,本地分支,pull,push,merge等。
安全性。安全性包含了兩方面:1.步驟2的遠(yuǎn)程分支的加鎖。2.步驟5的本地分支代碼的隨時(shí)提交,比如中午吃飯,抽煙,開會(huì),下班等出現(xiàn)離開電腦前的情況時(shí),隨時(shí)將本地代碼push到自己的遠(yuǎn)程分支,保證本地分支的代碼與遠(yuǎn)程分支始終保持一致,即使是功能未完成,跑不起來也要提交,提交之后也不會(huì)影響其他人編譯他們自己的分支上的代碼。
當(dāng)然,正如文章標(biāo)題所說,這套分支方案是相對(duì)標(biāo)準(zhǔn),有一定缺陷。隨著知識(shí)點(diǎn)的增加與編程思想的夯實(shí),我心目中也有一套絕對(duì)標(biāo)準(zhǔn)的分支管理方案,后續(xù)有時(shí)間我會(huì)更新。


