炸了!實(shí)習(xí)生把代碼倉(cāng)庫(kù)搞得一團(tuán)糟…
最近兩周一直都挺忙的,不僅要帶組里新來(lái)的實(shí)習(xí)生,也要統(tǒng)籌、協(xié)調(diào)我們研發(fā)小隊(duì)的整體進(jìn)度,屬實(shí)是累到不行。
不得不說(shuō),作為一個(gè)程序員,最容易的事真的是寫代碼了,你讓電腦干啥就干啥,你讓它輸出 1 就不會(huì)輸出?2?
。
跟寫代碼相比,協(xié)調(diào)、溝通、同步進(jìn)度這些才是最耗費(fèi)精力的。
1、心態(tài)炸了
這幾天最讓我焦頭爛額的就是新來(lái)的實(shí)習(xí)生 git 操作太差了,差點(diǎn)把我們小組的代碼倉(cāng)庫(kù)搞砸了。
這個(gè)實(shí)習(xí)生前段時(shí)間剛來(lái),基礎(chǔ)挺不錯(cuò)的。
在得知他的常用語(yǔ)言是 JavaScript,也使用過(guò)一些 Vue,就把組里的一個(gè)前端小需求交給他了。
這個(gè)小需求主要是實(shí)現(xiàn)一個(gè) form 表單,然后通過(guò) put 接口區(qū)更新一下表單兩個(gè)字段,是不是聽(tīng)起來(lái)挺簡(jiǎn)單的。。。其實(shí)確實(shí)挺簡(jiǎn)單的,他也信誓旦旦地說(shuō)沒(méi)啥問(wèn)題。
最后完成后就把我叫過(guò)去驗(yàn)收一下,我簡(jiǎn)單測(cè)試了一下,確定沒(méi)啥問(wèn)題,就讓他推到?gitlab?倉(cāng)庫(kù)上去,如果有什么事情再叫我就是了。
然后轉(zhuǎn)頭就去忙我自己的事了。。。
結(jié)果就?BOOM!?。?/strong>
不知道他怎么搞的,直接?push?到?master?分支去了,直接跨過(guò)開(kāi)發(fā)分支和測(cè)試分支,直接合到?master 發(fā)布分支上去了。
這還不算什么。。。如果只是這樣就還好,關(guān)鍵是他看有寫代碼沖突就直接在?master?分支上對(duì)已經(jīng)成功發(fā)版的代碼增刪改?。?!
OMG?。?!所以就直接 BOOM了!
然后我就被 Leader 一頓批。。。也確實(shí)是我沒(méi)說(shuō)清楚,看他基礎(chǔ)挺好的,想著最基本的 git 操作應(yīng)該也是 ok 的,然后就被打臉了。。。
不過(guò)還好,問(wèn)題不大,我丟給實(shí)習(xí)生一份 git 基本操作手冊(cè),告誡他兩句就完事了。
沒(méi)有什么人剛開(kāi)始工作就什么都會(huì),什么都懂。犯錯(cuò)沒(méi)關(guān)系,重要的是要知道自己為啥錯(cuò)了就可以,下次不要再犯啦。
我在入職之初,Mentor 就是這么跟我說(shuō)的,他會(huì)給我留出一部分犯錯(cuò)的空間,只要不是原則性問(wèn)題,比如刪庫(kù)跑路,其余的都沒(méi)關(guān)系。
所以,我也是這么跟我?guī)У哪莻€(gè)實(shí)習(xí)生說(shuō)的。
人嘛,都是一步一步踩坑過(guò)來(lái)的,沒(méi)有那么多天才,失敗是成功他媽。
這里也簡(jiǎn)單說(shuō)一下,團(tuán)隊(duì)合作開(kāi)發(fā)項(xiàng)目和個(gè)人開(kāi)發(fā)的一些區(qū)別,一些還在讀書的小伙伴可要好好看下去哦。
2、個(gè)人開(kāi)發(fā)
個(gè)人開(kāi)發(fā)就比較簡(jiǎn)單,自己完成功能開(kāi)發(fā)后直接?push?代碼,因?yàn)槿潭际亲约阂粋€(gè)人開(kāi)發(fā),所以在合并代碼的時(shí)候也不會(huì)有沖突產(chǎn)生。
很多在校的學(xué)弟學(xué)妹們估計(jì)也是如此,一個(gè)人使勁鼓搗都沒(méi)事。
可是正式工作后就不行啦,首先要學(xué)會(huì)的就是如何跟別人合作完成開(kāi)發(fā)任務(wù)。
3、團(tuán)隊(duì)開(kāi)發(fā)
一般來(lái)說(shuō),團(tuán)隊(duì)合作開(kāi)發(fā)的話,每個(gè)人都需要在自己的功能分支?feat/XXX?上開(kāi)發(fā),最后一起合并到總的開(kāi)發(fā)分支?dev?上,然后將開(kāi)發(fā)分支?dev?合并到測(cè)試分支上,最后將測(cè)試分支合并到正式發(fā)布分支上。
其中總的開(kāi)發(fā)分支一般叫做?dev?分支,正式發(fā)布分支一般是叫?main/master/release?分支。
這里我畫了一張圖幫助大家理解:

比如說(shuō)有 A、B、C 三個(gè)人協(xié)助進(jìn)行功能開(kāi)發(fā):
1、首先 A、B、C 三位小伙伴從總開(kāi)發(fā)分支 Dev 上開(kāi)辟自己的功能分支,分別是 feat/AXXX、feat/BXXX、feat/CXXX,也就是圖中 feat/AXXX、feat/BXXX、feat/CXXX 的三條線;
2、然后在自己的開(kāi)發(fā)機(jī)上進(jìn)行開(kāi)發(fā),這里的開(kāi)發(fā)機(jī)可以是本地環(huán)境也可以是一些云端的開(kāi)發(fā)機(jī)。開(kāi)發(fā)完畢后,再分別合到總開(kāi)發(fā)分支 dev 上,也就是圖中藍(lán)色的三條線,在這個(gè)過(guò)程中可能會(huì)產(chǎn)生一些代碼沖突,挨個(gè) solve 即可;
3、接著在 dev 分支上確認(rèn)所有功能開(kāi)發(fā)完畢,進(jìn)行簡(jiǎn)單自測(cè),fix 一些 bug 后再向測(cè)試分支上進(jìn)行合并;
4、這個(gè)時(shí)候就可以艾特測(cè)試組的同學(xué)來(lái)進(jìn)行測(cè)試,測(cè)試通過(guò)后再合到 master 分支進(jìn)行發(fā)布。
一般來(lái)說(shuō),基本的流程就是這樣的,不同公司或許其中流程有些出入,不過(guò)問(wèn)題不大,大致方向是如此的。
- EOF -
點(diǎn)贊和在看就是最大的支持??
