成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Git工作流模式選型問題探討

開發 前端
開發環境一般主要是給開發調試程序時候使用的,而如果要從開發狀態轉變為測試狀態的話,需要的是一個能夠長期保障穩定性和邏輯順暢性的代碼環境,這個時候建議可以通過新增一套release分支來進行測試環境的代碼管理。

Git工作流

在企業內的團隊開發場景中,可以采用多種Git工作流模式來管理團隊成員間的代碼協同工作,今天來和大家深入探討下關于Git工作流的選型問題,以及自己對于Git工作流模式未來的一些走向看法。

Gitflow模式

特點:使用發布分支、特性分支、bug 修復分支以及預發布分支。主要分支包括 master、develop、feature、release、hotfix。

由于Gitflow模式涉及到了很多不同的分支名稱,所以這里我打算用一系列的圖來和大家介紹下這些分支的概念。

master/feature/develop 分支

首先我們的master分支一定是最終發布上線使用的分支代碼,所有的需求開發,都需要通過master分支中去checkout出來,生成對應的feature分支。

當同一個項目涉及到多個分支改動的時候,就難免會需要進行分支合并后再發布到開發環境的情況發生。

這時候可以通過利用新增一條develop分支的做法,將同一個項目的多條feature分支進行merge后,再發布到開發環境中。如下圖所示:

圖片圖片

采用新增develop分支的模式可以解決開發環境多分支合并部署的問題了。那么release分支又是做什么的呢?

release 分支

開發環境一般主要是給開發調試程序時候使用的,而如果要從開發狀態轉變為測試狀態的話,需要的是一個能夠長期保障穩定性和邏輯順暢性的代碼環境,這個時候建議可以通過新增一套release分支來進行測試環境的代碼管理。如下圖所示:

圖片圖片

從圖中可以看到,不同開發負責的feature分支,在進行提測的時候都需要往相同的release分支進行合并。

當release分支上的代碼通過測試回歸之后,我們可以視作此時的release分支的代碼是屬于可合并到master的狀態。因此一般這個時候會將release分支的代碼分別合并到master和develop分支上,以此來保證準確性。同時此時可以將master分支的代碼發布到預發環境進行最后的回歸驗證。

hotfix分支

其實hotfix分支在使用上可以說和feature分支基本一樣,它的定位是:對master分支上的bug進行修復。hotfix分支也是需要從master分支中checkout出來,然后進行修改,最后合并到develop/release分支上進行回歸驗證,最后并入到master分支進行發布。在一定程度上,hotfix屬于feature分支的一種特殊類型。

圖片圖片

git-flow模式的痛點

其實用久了git-flow模式后,你會很容易發現,這種模式對于分支的領域劃分是非常清晰的。例如develop分支專門用于開發,release分支專門用于測試,hotfix分支專門用于打補丁。

但是隨著迭代的增加,這些分支的管理是一件比較容易出錯的事情。例如:手誤將feature分支合并到release分支。hotfix分支忘記合并到develop分支等等。release分支包含了太多feature分支代碼,其中部分feature分支延遲上線導致release分支代碼需要移除部分commit后再合并到master分支。

這是我認為的git-flow模式的一大痛點。雖然它強調于對分支的標準化管理,但是實際落地在團隊使用的時候,很多毛病都會體現出來。

Github flow模式

特點:Github flow 是Git flow的簡化版,專門配合"持續發布"。它是 Github.com 使用的工作流程。

步驟

  1. 拉取最新的代碼:git pull origin master 
  2. 創建新的功能分支:git checkout -b feature-branch master
  3. 開發功能:在新創建的分支上進行修改、提交和測試
  4. 合并到master:git checkout master -> git merge feature-branch
  5. 推送到中央存儲庫:git push origin master

圖片圖片

這種模式比較適合于合作人數較少的場景中進行快速開發和迭代。在實際使用中,團隊leader只需要保障master分支的“干凈”即可。各個團隊成員的特性分支代碼獨立。但是如果是涉及到需要多人合作對同一個項目進行并行開發,需要多次進行代碼合并的話,這種開發模式就很痛苦。

Gitlab flow 模式

采用Github flow模式雖然說很靈活,但是它有個強制的要求就是master分支的代碼一定要和生產環境的代碼對齊。

但是在一些特殊的應用場景中,例如IOS開發(需要有審核時間),某些SAAS平臺的一些特殊功能開發,在那類場景中經常是會出現代碼合并到master,但是需要延遲一段時間才發布到生產環境。

Gitlab flow模式就是在上述的Github flow模式中進行的衍生,增加了一個所謂的pre-production分支,用于作為待發布狀態的環境分支,它的代碼合并流程如下所示:

圖片圖片

處于pre-production分支的代碼是經過驗證可以合并到生產環境的代碼,而production分支的代碼則是生產正在運行中的代碼。這個由pre-production到production分支的合并動作,需要由CICD平臺自動化來實現。

說實話,我在實際工作中主要還是用的Github flow模式,Gitlab flow模式個人接觸得并不多。

我的看法

早些年工作的時候,經歷過一些多人合作修改同一個項目的開發工作。那會團隊采用的是git flow的工作流,當時總是會出現合并沖突,分支錯亂,git命令使用錯誤導致代碼丟失等問題。

但是隨著這些年微服務的普及,很多公司其實都已經陸續意識到了大單體架構的痛點,于是也按照領域劃分拆解為了多個微服務。

實際上,隨著微服務粒度在不斷降低,每個開發所負責的領域也開始進行了劃分。如果服務劃分合理,其實一個項目基本上主需要一個 主程 (core  developer,有些公司習慣叫項目owner)去維護基本就OK了。如果是這種模式下進行代碼開發的話,其實采用經典的 github flow 或者 gitlab flow 模式進行開發即可滿足。

我認為,隨著日后的發展,業內技術的走向一定是將事情由繁化簡。隨著企業內部的CICD技術體系完善,git flow這種笨重的模式也會漸漸被摒棄,github flow/gitlab flow 這種靈活輕便的模式會越來越受人追崇。

對于git工作流模式來說,我認為沒有絕對完美的方案,只能說結合當前所遇到的業務場景來靈活制定,見招拆招。

責任編輯:武曉燕 來源: Idea的技術分享
相關推薦

2021-10-14 11:34:05

技術工作流引擎

2015-06-24 10:18:26

2022-02-21 10:50:28

SvnGitHub分支

2021-02-20 06:11:07

Git-Flow工作流分支

2022-07-10 21:17:01

GitTigLinux

2022-10-26 08:00:43

Activiti工作流BPM

2013-04-23 10:28:08

IBeamMDAAWF

2024-04-25 08:00:00

DevOps架構軟件開發

2015-03-23 11:17:55

docker高效開發工作流

2012-07-23 10:36:46

工作流

2009-03-03 09:13:36

工作流BPM業務流程

2010-01-04 17:42:50

SilverLight

2023-01-04 08:02:16

工作流架構設計

2011-12-14 09:58:58

JavajBPM

2023-07-05 09:48:44

Activiti部署

2025-04-28 09:10:00

智能體Agent工作流

2015-07-14 09:26:28

微型工作流引擎設計

2024-08-05 12:46:51

2020-02-27 15:53:01

開發技能代碼

2013-09-29 17:13:59

PowerShell工作流
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97国产精品视频人人做人人爱 | 无码国模国产在线观看 | 免费的av网站 | 国产亚洲精品精品国产亚洲综合 | 午夜亚洲 | 欧美日韩视频在线第一区 | 黄网在线观看 | 精品国产成人 | 97精品国产97久久久久久免费 | 欧美二区在线 | 亚欧性视频 | 亚洲成人一区 | 91av免费观看| 91精品在线播放 | 日韩欧美一区二区三区免费观看 | 欧美三级免费观看 | 欧美视频在线免费 | 亚洲第一免费播放区 | 精品欧美一区二区精品久久 | 国产精品射 | 一级毛片免费视频观看 | 久久国产一区二区 | 欧美一区在线视频 | 欧美日韩在线一区二区三区 | 成人免费视频 | 久久综合狠狠综合久久综合88 | 国产精品不卡一区 | 亚洲视频一区二区三区 | 亚洲网视频 | www视频在线观看 | 91精品国产一区二区三区动漫 | 精品国产精品 | 亚洲欧美综合 | 国产成人午夜电影网 | 亚洲国产一区视频 | 午夜小视频在线播放 | 免费电影av | 免费网站国产 | 97精品超碰一区二区三区 | 久久久精品一区 | 欧美精品在线免费 |