前言
大廠有著數(shù)量龐大的代碼庫(kù)以及復(fù)雜的權(quán)限驗(yàn)證體系乞榨,囊括著開(kāi)發(fā)、測(cè)試当娱、上線的完整流程吃既。因此必然會(huì)有一套代碼倉(cāng)庫(kù)的管理流程,而不再是個(gè)人的代碼隨意開(kāi)發(fā)跨细、隨意提交鹦倚。這也是我從小廠出來(lái)學(xué)習(xí)到的第一堂課——完整的git提交流程。下面我們以一位頭條大佬的倉(cāng)庫(kù)為例冀惭,講解如何對(duì)線上倉(cāng)庫(kù)進(jìn)行開(kāi)發(fā)
fork倉(cāng)庫(kù)
Interview-Book 這是頭條大佬的倉(cāng)庫(kù)震叙,我們可以看到他的分支信息
我們可以看到有三個(gè)分支掀鹅。假定這是一個(gè)發(fā)布到生產(chǎn)環(huán)境的應(yīng)用,master一般用來(lái)存放線上分支媒楼,即這個(gè)倉(cāng)庫(kù)存放的是線上正在運(yùn)行的代碼乐尊,另外的倉(cāng)庫(kù)便是開(kāi)發(fā)分支,一般會(huì)把開(kāi)發(fā)分支設(shè)置為默認(rèn)倉(cāng)庫(kù)划址,避免誤提交代碼線上(線上一般會(huì)禁止提交)科吭,我們先f(wàn)ork一個(gè)到自己的倉(cāng)庫(kù)
本地開(kāi)發(fā)
接著我們就可以clone倉(cāng)庫(kù)到本地
拉取到本地后注意 VSC 右下角的分支,github默認(rèn)是master分支猴鲫,要手動(dòng)切換到開(kāi)發(fā)分支对人,并在remote中添加線上倉(cāng)庫(kù)
git remote add upstream https://github.com/Mountain-Buzhou/Interview-Book
遠(yuǎn)程倉(cāng)庫(kù)是頭條大佬的倉(cāng)庫(kù),并且一般自己的github倉(cāng)庫(kù)命名為origin 線上倉(cāng)庫(kù)命名為upstream拂共。這個(gè)時(shí)候我們就有了三個(gè)倉(cāng)庫(kù)牺弄,分別是:
- 線上倉(cāng)庫(kù)(發(fā)布項(xiàng)目的git倉(cāng)庫(kù),一般是擁有者是團(tuán)隊(duì)或TL)
- 自己倉(cāng)庫(kù)(自己fork線上倉(cāng)庫(kù)到自己的github)
- vscode本地倉(cāng)庫(kù)(git還在本地有一個(gè)倉(cāng)庫(kù))
到目前為止宜狐,我們還不能直接進(jìn)行開(kāi)發(fā)势告,而需要從這個(gè)dev倉(cāng)庫(kù)(在這里是version_alpha)切出一個(gè)分支
git checkout -b feat/add-artical
命名為feat:xxx, 即新添加的需求
我們切換了一個(gè)新的分支,在這個(gè)新的分支上添加一些修改
我把以前寫(xiě)的一篇二叉樹(shù)相關(guān)的文章添加到頭條大佬Book中抚恒,接著進(jìn)行commit, commit的內(nèi)容也應(yīng)該遵守規(guī)范咱台,一般來(lái)說(shuō)是
- fix:xx 表示修改了XX代碼
- feat:xx 新增了XX需求
- style:xx 修改了部分的樣式
- delete:xx 刪除了某些無(wú)用的部分
標(biāo)題最好能簡(jiǎn)短的描述出這個(gè)commit干了些什么,具體內(nèi)容可以在comment中詳細(xì)寫(xiě)
提交PR
feat感覺(jué)命名錯(cuò)了俭驮,因此改成了add:增加二叉樹(shù)相關(guān)內(nèi)容
在合并之前我們需要做codereview, 在我們小組所有進(jìn)行合并的代碼必須要進(jìn)行codereview并且每一個(gè)組員都可以參加回溺,codereview是讓自己進(jìn)行提升以及幫助別人糾錯(cuò)的一個(gè)重要途徑。通過(guò)看別人的代碼混萝,可以了解到不同的思維遗遵。點(diǎn)擊 Files changed查看這次更改的代碼
在代碼的行數(shù)處,鼠標(biāo)移到上面就會(huì)出現(xiàn)一個(gè) + 號(hào)逸嘀,點(diǎn)擊便可以出現(xiàn)一個(gè)浮動(dòng)的 comment 框车要,我們就可以針對(duì)這行代碼進(jìn)行提問(wèn)
合并PR
確認(rèn)無(wú)誤后,我們便可以等待頭條大佬合并PR到dev(這里是version_alpha)分支崭倘,頭條大佬合并以后我們就可以在本地倉(cāng)庫(kù) 切換到自己的 遠(yuǎn)程分支 origin/dev 拉取 upstream/dev到本地翼岁,然后再推送到 origin/dev 這樣就完成了一次完整的 PR
hotfix
有些時(shí)候產(chǎn)品會(huì)要求緊急上線一個(gè)需求,這個(gè)時(shí)候需要在線上的代碼更新司光,因此我們會(huì)從線上分支切一個(gè)分支到自己倉(cāng)庫(kù)琅坡,然后在這個(gè)分支上進(jìn)行修改,修改完以后會(huì)提兩個(gè)PR命名為:hotfix:xxx 到dev倉(cāng)庫(kù)和master倉(cāng)庫(kù)