開發(fā)生涯的前三年都是使用 svn
警绩,回首放佛如前世。自從用了 git
逮矛,整個人都神經(jīng)了毡证。
下面的內(nèi)容肯定不是什么教你如何用git提交代碼,合并分支之類的』煮荩現(xiàn)在本人要從寫術的層面提升一下自己文章的品質(zhì)到道的層面葛假。
使用git帶來的分支疑惑
git
為什么好,為什么要用 git
滋恬,這不是我本文想要說明的問題聊训。
這里想要給大家分享一下自己使用過程中產(chǎn)生的疑惑,以及解決的這些疑惑的過程恢氯。話又說回來带斑,我現(xiàn)在依然充滿疑惑。真不知道30歲的時候會不會不惑勋拟。
在使用 git
過程中勋磕,它的分支功能讓我真的欣喜若狂,不過這是把雙刃劍敢靡,一不小心你會得到這種git
路徑圖:
圖片來源:阮一峰老師博客
我的疑惑:
- 那么團隊中我們該使用怎樣的分支策略來進行開發(fā)協(xié)作挂滓?
- 在多人的團隊中,我們應該在
master
分支上直接開發(fā)嗎啸胧? - 如果線上產(chǎn)生了bug該通過什么樣方式的分支去修復赶站?
- 當有多個分支的時候幔虏,測試如何有效的參與進來每一個分支的測試?
用成熟的工作流來解決問題
在解答上面的疑惑前贝椿,先介紹幾個工作流想括,然后通過工作流的模式,來進行解答烙博。因為我們必須在某種設定的情景下瑟蜈,才能討論解決問題的思路。
下面三種工作流方式渣窜,都是采用功能驅動開發(fā)铺根,也就是先有需求產(chǎn)生,然后誕生對應的分支乔宿,然后開發(fā)位迂,最后合并回來,完成使命被刪除予颤。
- Git flow
- Github flow
- Gitlab flow
關于這三種工作流的詳細介紹,建議看看這篇文章-阮一峰
我現(xiàn)在采用的是 Git flow
冬阳,經(jīng)過自己的實踐蛤虐,確實好用,解決不少問題肝陪。然后如果發(fā)現(xiàn)與自己的實際情況有些出入驳庭,可以根據(jù)需求做出些變動調(diào)整。
我的選擇
我選擇了 Git flow氯窍,它的主要特點是饲常,長期存在兩個分支:
- 主分支master
- 開發(fā)分支develop
然后,存在三種輔助分支狼讨,都是短期的贝淤,并且一半情況下只應該存在本地,不要提交到遠程庫政供。
- 功能分支(feature branch)
- 補丁分支(hotfix branch)
- 預發(fā)分支(release branch)
在進行上面的分支時播聪,建議的命名規(guī)范:feature-xxx、release-xxx布隔、hotfix-xxx
話外:我以前喜歡用下劃線离陶,后來發(fā)現(xiàn)打中線不需要按
shift
,哈哈衅檀,從此開始中線時代招刨。
什么時候要功能分支?
當你拿到一個需求哀军,或者不是一個立馬需求上線的bug修復沉眶,那么就應該從 develop
開一個分支出來打却,完成這部分工作。完成后合并到 develop
分支沦寂。
什么時候要預發(fā)分支学密?
這個分支是為預發(fā)準備的,測試的介入传藏,也只應該在該分支產(chǎn)生時才介入腻暮。當我們不管是新功能開發(fā),還是一般的bug修改都差不多了毯侦。就應該從develop
產(chǎn)生一個release
分支哭靖,交給測試,如果有bug直接在上面修改侈离。全部完成后试幽,合并回develop
,并且合并到master
卦碾。
關于這個分支我得再多說幾句铺坞。因為這是非常重要的一步,如果我們使用了 git 鉤子洲胖,當合并到 master
的時候济榨,會自動發(fā)布到線上,所以這是臨上線的最后一道屏障绿映。
同時這里也解決了我一個疑惑擒滑,測試如何參與到git
的每個分支中來?答案是:測試不應該參與到每個分支中來叉弦,只應該參與到release
分支中去丐一。其它的開發(fā)分支,都應該由開發(fā)人員自己測試淹冰,測試沒有問題的時候才準許合并到develop
库车,這就要求每一個開發(fā)要提高自己交付的產(chǎn)品質(zhì)量,如何確保自己交付的產(chǎn)品質(zhì)量樱拴?自動化測試是個不錯的選擇凝颇,好了,打住疹鳄,這不是咋們今天的主要任務拧略,這個話題改天再聊。
什么時候需要補丁分支瘪弓?
這種情況越少越好垫蛆。因為它產(chǎn)生的原因是:線上出了bug,并且必須馬上修復,不管你身在何方袱饭,當手機響起川无,拿出電腦改bug吧。
它與release
很像虑乖,都需要完成后懦趋,同時合并到:master
與develop
。不同的是疹味,它需要從master
上開一個分支出來仅叫。
注意這里沒有測試的介入,一半來說都是代碼上某一個小的緊急bug糙捺,雖然很嚴重诫咱,但是可以很容易改動。當然如果有一些例外情況洪灯,應該讓測試進行測試后再合并坎缭、發(fā)布。
總結
git
開發(fā)很好用签钩,但是要按照一定規(guī)則合理使用分支掏呼。
另外,除了:master
與develop
分支铅檩,其它分支都不應該出現(xiàn)在遠程倉庫中憎夷。
用git
一定要結合它的各種鉤子來使用,提升開發(fā)效率柠并。這里后面來介紹下岭接。
參考資料:
- [1]Git 工作流程
- [2]介紹一個成功的 Git 分支模型
介紹
我是何磊富拗,主要工作就是寫代碼臼予,持續(xù)創(chuàng)業(yè)者(之所以持續(xù)是因為到現(xiàn)在還沒有干成功過一件事)。如果你有興趣歡迎關注我啃沪,我會分享技術粘拾,還有生活,當然還有我創(chuàng)業(yè)的故事(說出我的痛创千,讓你開心一下)缰雇。
我的博客地址: https://helei112g.github.io