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

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

開發(fā) 前端
開發(fā)環(huán)境一般主要是給開發(fā)調(diào)試程序時(shí)候使用的,而如果要從開發(fā)狀態(tài)轉(zhuǎn)變?yōu)闇y試狀態(tài)的話,需要的是一個(gè)能夠長期保障穩(wěn)定性和邏輯順暢性的代碼環(huán)境,這個(gè)時(shí)候建議可以通過新增一套release分支來進(jìn)行測試環(huán)境的代碼管理。

Git工作流

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

Gitflow模式

特點(diǎn):使用發(fā)布分支、特性分支、bug 修復(fù)分支以及預(yù)發(fā)布分支。主要分支包括 master、develop、feature、release、hotfix。

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

master/feature/develop 分支

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

當(dāng)同一個(gè)項(xiàng)目涉及到多個(gè)分支改動(dòng)的時(shí)候,就難免會(huì)需要進(jìn)行分支合并后再發(fā)布到開發(fā)環(huán)境的情況發(fā)生。

這時(shí)候可以通過利用新增一條develop分支的做法,將同一個(gè)項(xiàng)目的多條feature分支進(jìn)行merge后,再發(fā)布到開發(fā)環(huán)境中。如下圖所示:

圖片圖片

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

release 分支

開發(fā)環(huán)境一般主要是給開發(fā)調(diào)試程序時(shí)候使用的,而如果要從開發(fā)狀態(tài)轉(zhuǎn)變?yōu)闇y試狀態(tài)的話,需要的是一個(gè)能夠長期保障穩(wěn)定性和邏輯順暢性的代碼環(huán)境,這個(gè)時(shí)候建議可以通過新增一套release分支來進(jìn)行測試環(huán)境的代碼管理。如下圖所示:

圖片圖片

從圖中可以看到,不同開發(fā)負(fù)責(zé)的feature分支,在進(jìn)行提測的時(shí)候都需要往相同的release分支進(jìn)行合并。

當(dāng)release分支上的代碼通過測試回歸之后,我們可以視作此時(shí)的release分支的代碼是屬于可合并到master的狀態(tài)。因此一般這個(gè)時(shí)候會(huì)將release分支的代碼分別合并到master和develop分支上,以此來保證準(zhǔn)確性。同時(shí)此時(shí)可以將master分支的代碼發(fā)布到預(yù)發(fā)環(huán)境進(jìn)行最后的回歸驗(yàn)證。

hotfix分支

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

圖片圖片

git-flow模式的痛點(diǎn)

其實(shí)用久了git-flow模式后,你會(huì)很容易發(fā)現(xiàn),這種模式對(duì)于分支的領(lǐng)域劃分是非常清晰的。例如develop分支專門用于開發(fā),release分支專門用于測試,hotfix分支專門用于打補(bǔ)丁。

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

這是我認(rèn)為的git-flow模式的一大痛點(diǎn)。雖然它強(qiáng)調(diào)于對(duì)分支的標(biāo)準(zhǔn)化管理,但是實(shí)際落地在團(tuán)隊(duì)使用的時(shí)候,很多毛病都會(huì)體現(xiàn)出來。

Github flow模式

特點(diǎn):Github flow 是Git flow的簡化版,專門配合"持續(xù)發(fā)布"。它是 Github.com 使用的工作流程。

步驟

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

圖片圖片

這種模式比較適合于合作人數(shù)較少的場景中進(jìn)行快速開發(fā)和迭代。在實(shí)際使用中,團(tuán)隊(duì)leader只需要保障master分支的“干凈”即可。各個(gè)團(tuán)隊(duì)成員的特性分支代碼獨(dú)立。但是如果是涉及到需要多人合作對(duì)同一個(gè)項(xiàng)目進(jìn)行并行開發(fā),需要多次進(jìn)行代碼合并的話,這種開發(fā)模式就很痛苦。

Gitlab flow 模式

采用Github flow模式雖然說很靈活,但是它有個(gè)強(qiáng)制的要求就是master分支的代碼一定要和生產(chǎn)環(huán)境的代碼對(duì)齊。

但是在一些特殊的應(yīng)用場景中,例如IOS開發(fā)(需要有審核時(shí)間),某些SAAS平臺(tái)的一些特殊功能開發(fā),在那類場景中經(jīng)常是會(huì)出現(xiàn)代碼合并到master,但是需要延遲一段時(shí)間才發(fā)布到生產(chǎn)環(huán)境。

Gitlab flow模式就是在上述的Github flow模式中進(jìn)行的衍生,增加了一個(gè)所謂的pre-production分支,用于作為待發(fā)布狀態(tài)的環(huán)境分支,它的代碼合并流程如下所示:

圖片圖片

處于pre-production分支的代碼是經(jīng)過驗(yàn)證可以合并到生產(chǎn)環(huán)境的代碼,而production分支的代碼則是生產(chǎn)正在運(yùn)行中的代碼。這個(gè)由pre-production到production分支的合并動(dòng)作,需要由CICD平臺(tái)自動(dòng)化來實(shí)現(xiàn)。

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

我的看法

早些年工作的時(shí)候,經(jīng)歷過一些多人合作修改同一個(gè)項(xiàng)目的開發(fā)工作。那會(huì)團(tuán)隊(duì)采用的是git flow的工作流,當(dāng)時(shí)總是會(huì)出現(xiàn)合并沖突,分支錯(cuò)亂,git命令使用錯(cuò)誤導(dǎo)致代碼丟失等問題。

但是隨著這些年微服務(wù)的普及,很多公司其實(shí)都已經(jīng)陸續(xù)意識(shí)到了大單體架構(gòu)的痛點(diǎn),于是也按照領(lǐng)域劃分拆解為了多個(gè)微服務(wù)。

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

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

對(duì)于git工作流模式來說,我認(rèn)為沒有絕對(duì)完美的方案,只能說結(jié)合當(dāng)前所遇到的業(yè)務(wù)場景來靈活制定,見招拆招。

責(zé)任編輯:武曉燕 來源: Idea的技術(shù)分享
相關(guān)推薦

2021-10-14 11:34:05

技術(shù)工作流引擎

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架構(gòu)軟件開發(fā)

2015-03-23 11:17:55

docker高效開發(fā)工作流

2012-07-23 10:36:46

工作流

2009-03-03 09:13:36

工作流BPM業(yè)務(wù)流程

2010-01-04 17:42:50

SilverLight

2023-01-04 08:02:16

工作流架構(gòu)設(shè)計(jì)

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

微型工作流引擎設(shè)計(jì)

2024-08-05 12:46:51

2013-09-29 17:13:59

PowerShell工作流

2024-07-31 08:01:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲一区二区三区欧美 | 色www精品视频在线观看 | 日本久草| 一区二区三区免费观看 | 天天玩天天操天天干 | 91正在播放 | 久久精品久久精品 | 中文字幕一页二页 | 超碰成人免费观看 | 91影院在线观看 | 色在线免费| 亚洲精品456 | 成人污污视频 | 久草在线 | 高清欧美性猛交xxxx黑人猛交 | 蜜桃久久 | 欧美日韩高清免费 | 最新日韩在线视频 | 成人精品一区二区三区 | 亚洲欧美高清 | 欧美亚洲另类丝袜综合网动图 | 97伊人 | 免费精品久久久久久中文字幕 | 毛片网站在线观看 | jlzzjlzz欧美大全 | 精品视频免费 | 在线日韩欧美 | 精品视频一区二区 | 欧美一级在线 | 欧美精品中文字幕久久二区 | 亚洲国产中文字幕 | 成人三级视频在线观看 | 国产激情一区二区三区 | 黄色成人在线网站 | 一区二区日本 | 国产视频福利在线观看 | 高清国产一区二区 | 日本三级线观看 视频 | 国产精品一卡二卡三卡 | 日韩精品一区二区三区中文在线 | 97久久久久久 |