Git 版本控制系統(tǒng)規(guī)范

我們?yōu)槭裁催x擇 Git

目前如果你如果進(jìn)行項(xiàng)目開發(fā)有一定規(guī)范,那么肯定會(huì)使用版本控制系統(tǒng)(Version Control System),目前比較流行兩個(gè)就是 SVN 和 Git。Git有很多優(yōu)點(diǎn),其中很顯著的一點(diǎn),就是版本的分支(branch)和合并(merge)十分方便,相對也占用更少的硬盤空間。


我們的管理規(guī)范

我們公司使用了 Git + YouTrack 配合進(jìn)行版本控制,我先簡單說一下我們現(xiàn)在的流程規(guī)范(如果你還沒用過 Git 可以跳過)。

首先,我們有一個(gè)主分支 Master,這里只有穩(wěn)定的可用版本,Master 上的每個(gè)版本就是拿來可以用的對應(yīng)版本號(hào)的發(fā)布版本(含已發(fā)布版本和待發(fā)布版本),Master 是不允許隨意改動(dòng)的。

第二,從 Master 唯一新建分支,開發(fā)分支 Develop,該項(xiàng)目所有開發(fā)者在完成新模塊或修復(fù)異常等一個(gè)具體任務(wù)后,可以合并到 Develop 進(jìn)行聯(lián)合測試。

第三,從開發(fā)分支 Develop,以開發(fā)者名新建分支,如 gallon、sfs、jksfood 等,作為單個(gè)開發(fā)者的開發(fā)分支。

第四,從自己的開發(fā)分支(如 gallon)再新建分支(該分支通過 Android Studio 內(nèi)置的 YouTrack 就會(huì)自動(dòng)提示創(chuàng)建一個(gè)任務(wù)分支,前提是 AS 的 Git 要和遠(yuǎn)端倉庫關(guān)聯(lián)起來),現(xiàn)在只要把一個(gè)個(gè) Task 任務(wù)發(fā)布到 YouTrack 就可以了,當(dāng)這個(gè)任務(wù)完成后,需要你把任務(wù)分支合并到自己的分支(gallon),自己運(yùn)行可以跑通(通常這里不會(huì)有任何問題,因?yàn)槔碚撋?gallon 是一直低于任務(wù)分支版本的)之后再提交到 develop 分支上,讓 Android 組長或負(fù)責(zé)人或測試人員去檢驗(yàn),如果沒有問題到此這個(gè)任務(wù)就算是 done 了。

我自己的使用感受

以上看起來步步都很清晰,你在什么階段在什么分支上做什么事,但是,我們來想這么一個(gè)情況,如果我有兩個(gè) Task 但是他們有很多重疊代碼,我可以去同時(shí)做這兩個(gè)任務(wù),但是根據(jù)管理規(guī)范你只應(yīng)該在一個(gè)分支上專注你的那個(gè) Task,而且領(lǐng)導(dǎo)只知道看 YouTrack 上已經(jīng)確定好的一條條任務(wù)給你做績效評定呢,結(jié)果新建了兩個(gè)任務(wù)分支 A 和 B,你猜的到的,效率會(huì)非常低,但是也有一點(diǎn)好處,你能更加專注的做好這一個(gè)任務(wù),想想規(guī)范一些也不錯(cuò),那么還有另外一種情況,突然又有新的需要優(yōu)先去處理的 Task,你需要先把當(dāng)前的任務(wù)分支本地提交,注意,這時(shí)因?yàn)樵撊蝿?wù)沒完成,我們通常不會(huì)把這個(gè)任務(wù)分支 A 合并到 gallon 分支(正確的做法是該任務(wù)完成后合并),然后切換到 gallon 分支,然后創(chuàng)建新任務(wù)分支 B,這時(shí)候 B 是落后 A 版本的,你在分支 A 中修改的代碼都不能在分支 B 中看到,但如果有些你需要用到的代碼,是的,要么在 B 中重新寫一份(可能還是要小小的解決一下沖突),要么等兩個(gè)任務(wù)都完成了,合并后再修改重疊部分,如果有些情況你常常要在任務(wù)分支 A 和任務(wù)分支 B 跳來跳去,那可能結(jié)果是你要不停解決你自己的沖突,聽起來是不是很好笑?好吧,我可能是做慣了多線程操作,常常同一時(shí)間做幾個(gè)任務(wù),修復(fù)一個(gè)小異?;蛘{(diào)整布局與開發(fā)新功能等同時(shí)進(jìn)行。這種規(guī)范對我的編程可以說是加了限制。

但是,我仍然覺得這種規(guī)范是很有道理和有必要的,雖然剛開始使用看起來步驟繁多,甚至可能是稍微降低效率的,可是這種規(guī)范對任務(wù)的按預(yù)期可控推進(jìn)依然起到了非常重要的作用,對安全性也提供了很大的保證。以后我會(huì)建議分配到個(gè)人的多個(gè)小任務(wù)也可以寫到一個(gè) Task 當(dāng)中去,這樣也在保證這種規(guī)范的情況下,更好的提高效率嘛。

然而這樣就是最先進(jìn)的或最規(guī)范的管理方法了嗎?我不知道,有的公司是沒有我提到的個(gè)人分支的,只需要在 develop 上創(chuàng)建新的任務(wù)分支;我之前的公司則是只要在 develop 上進(jìn)行開發(fā)就行。也許只有適合自己(團(tuán)隊(duì))的,才是最好的。當(dāng)然,如果你現(xiàn)在連 Git 都還沒體驗(yàn)過,肯定是看的一頭霧水,趕緊去試試吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 多種多樣的工作流使得在項(xiàng)目中實(shí)施Git時(shí)變得難以選擇。這份教程提供了一個(gè)出發(fā)點(diǎn),調(diào)查企業(yè)團(tuán)隊(duì)最常見的Git工作流。...
    JSErik閱讀 4,599評論 2 8
  • var new$=$.noConflict()
    qqyanzi閱讀 289評論 0 0
  • 7月20日 今天小家伙在一個(gè)斜坡上奔跑,我對他說“小心摔倒!”,當(dāng)時(shí)我有個(gè)覺察,是不是不用跟他說?讓他體會(huì)自然后果...
    成功的種子閱讀 214評論 0 0
  • 產(chǎn)品的功能絕對不可以隨便堆積。什么可以做和什么不可以做,都是要根據(jù)此產(chǎn)品設(shè)計(jì)的原則來決策的。 為什么那么多產(chǎn)品有堆...
    Johann閱讀 537評論 0 0
  • 1.『你的最佳睡眠時(shí)長』 每個(gè)人的睡眠時(shí)長需求都不一樣,有些人必須要睡到十個(gè)鐘才精神十足,而有些人則五六個(gè)鐘就已生...
    咿呀作語閱讀 186評論 0 1

友情鏈接更多精彩內(nèi)容