今天再學項目的過程中遇到使用gitflow模式管理代碼,因此進行學習并且發布關于gitflow的一些思考
Git與GitFlow模式
? ? ? ? 我們在寫代碼的時候通常會進行網上保存,無論是github還是gittee,都是一種基于git去保存代碼的形式,這樣保存代碼會十分的整潔并且丟失后還容易找回,但是,你會發現如下問題:
-
?版本管理不夠清晰?
如果沒有良好的規范,master
?分支可能包含未完成或不穩定的代碼。 -
?不適合多版本維護?
缺乏?release
?和?hotfix
?分支,難以同時維護多個版本或快速修復生產問題。 -
?并行開發支持較弱?
雖然支持功能分支,但沒有明確的集成分支(如?develop
),可能導致集成混亂。
但是gitflow模式通過多種嚴格的代碼流程處理掉了這些問題,具有優勢,我們將通過此篇文章講解gitflow的模式是如何處理這些問題的
當然劣勢也有,請拉到文章底部查看
GitFlow工作模式
master分支
發布上線時,基于master打tag,基于tag進行發布,不允許在該分支上開發,始終保持該分支的穩定。
develop分支
開發階段使用的分支,提交到該分支代碼都是相對穩定的,不能直接基于此分支開發,如果開發新的功能,需要基于此分支創建新的分支進行開發功能,待功能開發、測試通過后合并到develop分支。
Feature分支
當你需要去開發新的功能的時候,需要創建feature分支,功能開發完后合并到Develop分支,禁止未開發完成的代碼合并到Develop分支。
Release分支
當你的feature分支合并到develop分支之后,此時需要基于Develop分支創建Release分支,在Release分支中不再添加新的功能,只是做bug的修復,等測試完成bug全部修復之后,需要將Release分支合并到Master分支和Develop分支,并且基于Master打出版本的tag。
hotfix分支
如果發布到生成環境的版本出現bug,比如:生產環境的v1.0版本出現bug需要盡快修復,此時就需要基于master創建hotfix分支,并且基于hotfix分支修復bug,待bug修復完成后需要將代碼合并到master和develop分支。
基于以上流程,你就會能夠處理git流程的一些缺陷
gitFlow的優勢
-
?適合有明確發布周期的項目?
GitFlow 對版本控制非常嚴格,適合需要定期發布、維護多個版本(如企業軟件、移動應用)的項目。 -
?版本管理清晰?
master 分支始終代表可發布的穩定版本,develop 分支代表即將發布的版本,功能分支隔離開發,便于管理。 -
?并行開發支持好?
多個功能可以同時在不同的功能分支上開發,互不干擾,提高團隊協作效率。 -
?熱修復機制完善?
緊急問題可以通過熱修復分支快速修復并發布,同時不影響開發主線。
劣勢
-
?流程復雜,學習成本高?
GitFlow 分支模型較為復雜,對新手不友好,團隊需要花時間學習和適應。 -
?不適合持續集成/持續交付(CI/CD)??
GitFlow 的發布周期較長,分支較多,與現代 CI/CD 的快速迭代、頻繁發布的理念不太契合。 -
?合并沖突風險高?
由于分支多,合并頻繁,容易產生合并沖突,尤其是在大型項目中。 -
?維護成本高?
需要嚴格遵循流程,否則容易導致分支混亂,增加維護難度。