一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Git Flow應該拋棄的原因

汽車玩家 ? 來源:雷鋒網(wǎng) ? 作者:skura ? 2020-03-21 13:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導語:或許,Git-flow 分支模型應該葬身火海 。

Git-flow 是一種分支和合并方法。十年前,因為一篇名為「一個成功的 Git 分支模型」的文章,Git-flow 變得廣為人知。

在過去的十年里,無數(shù)團隊被這篇博文蒙在鼓里。但我敢說,這篇文章撒謊了。

如果你讀過這篇博文,你就會注意到,盡管作者聲稱他們在項目中成功使用了 Git-flow,但卻故意避開了讓項目成功的細節(jié)。

很多人會相信看到的博文,這其實是錯誤的。并非所有的策略都適用于所有情況,這是一個真理。我將同樣的邏輯應用于這個分支模型。

好吧,你們當中的一些人不相信這個真理,所以讓我們深入研究為什么 Git-flow 分支模型應該葬身火海。

Git-flow 的界面很復雜

Git-flow 特別復雜,甚至在考慮微服務或連續(xù)交付之前就已經(jīng)如此了。下面的圖片直觀地展示了這一點:

Git Flow應該拋棄的原因

圖片來源:https://nvie.com/posts/a-successful-git-branching-model/

這里有特性分支、發(fā)布分支、master 分支、dev 分支、一個緊急修復分支和 git 標記。這些都是在構(gòu)建和發(fā)布過程中必須跟蹤、理解和考慮的事情。

更重要的是,你還需要隨時跟蹤每個分支,這造成了很高的認知負荷。我已經(jīng)使用 git 10 年了,我甚至不確定自己是否能在精神上跟上這里的發(fā)展。

Git-flow 違反了「短命」分支規(guī)則

在 git 中,隨著在某個分支上工作人數(shù)的增加,發(fā)生合并沖突的次數(shù)將大大增加。在 Git-flow 中,這個數(shù)字增加得更多,因為還有三個具有不同生命周期的其他分支合并到開發(fā)中:特性分支、發(fā)布分支和緊急修復。合并沖突發(fā)生的可能性并不是線性變化的,它可能會使合并沖突的概率增加三倍。

這太糟糕了。

雖然我不敢說不采用 Git-flow 這樣的分支策略就可以避免合并沖突,但是當所有這些分支組合在一起時,引入的潛在復雜性太大了,無法忽略。如果你們公司的代碼提交速度很慢,那就沒關系。但是對于任何快速迭代的組織或初創(chuàng)企業(yè)來說,情況并非如此。

Git-flow 放棄了rebase

重新定位合并節(jié)點是一個復雜的話題,但它很重要。如果你使用 Git-flow,你將不得不放棄 rebase。記住,rebase 取消了合并提交,你再也看不到兩個分支組合在一起的節(jié)點。由于 Git-flow 的視覺復雜性,你需要可視化地跟蹤分支,這意味著如果你想解決問題,就不需要 rebase。

Git-flow 使連續(xù)交付變得不可能

持續(xù)交付是一種實踐。在這種實踐中,團隊以自動化的方式直接發(fā)布到生產(chǎn)中(實際上是合并到 master)??纯椿靵y的 Git-flow,你能解釋一下如何持續(xù)地交付嗎?

整個分支模型是根據(jù)可預測的、長期的發(fā)布周期進行預測的。如果每隔幾分鐘或幾小時發(fā)布一次新代碼,開銷就太大了,更不用說 CD 的中心實踐之一是向前滾動修復。Git-flow將修補程序視為一個單獨的實體,需要小心地控制,并與其他工作分離開來。

在多個存儲庫中不可能使用 Git-flow

隨著微服務的出現(xiàn),micro-repo 的理念也得到了更多的推動,各個團隊可以控制他們的存儲庫和工作流,他們還可以控制誰進入了他們的存儲庫以及其工作流是如何工作的。

你有沒有嘗試過這樣一個復雜的分支模型:它有多個團隊,并且希望它們都在同一個頁面上?這是不會發(fā)生的。很快,這個系統(tǒng)就變成了不同 repo 的不同版本的一個清單,只有敲出 YAML 來更新清單的人知道所有東西在哪里。如果你不夠細心,「在生產(chǎn)什么」就變成了一個存在主義的問題。

Git-flow 也不可能在 monorep 中使用

因此,如果由于協(xié)調(diào)發(fā)布的困難而取消了 micro-repo,那為什么不讓所有微服務團隊都遵守一個大的發(fā)布分支工作流呢?

這個過程大約持續(xù) 3.2 秒。如果團隊是獨立的,micro-repo 應該是獨立部署的,這樣就不能很好地將你的工作流程與你在 mono repo 中創(chuàng)建的集中式分支模型聯(lián)系起來。

誰應該/不應該使用 Git-flow?

如果你的團隊每月或每季度發(fā)布一次,并且是一個并行處理多個發(fā)布的團隊,那么 Git-flow 可能是一個不錯的選擇。如果你的團隊是一個初創(chuàng)企業(yè),或者是一個面向 internet 的網(wǎng)站或 web 應用程序,同一天可能發(fā)布多個版本,那 Git-flow 對你來說就不合適了。如果你的團隊是一個不到 10 人的微型團隊,Git-flow 會給你的工作帶來太多的規(guī)矩和開銷。

另一方面,如果你的團隊有 20 多人進行并行發(fā)布,那么 Gitflow 可以確保不會把事情搞砸。

如果不應該使用 Git-flow,那應該用什么?

我不能回答。并非所有分支模型都適用于所有團隊和所有情況。如果你練習 CD,你需要一些盡可能簡化過程的東西。

關鍵在于,團隊需要反思:這個分支模型將幫助我們解決哪些問題?會產(chǎn)生什么問題?這種模型將鼓勵什么樣的發(fā)展?我們想鼓勵這種行為嗎?使用分支模型的最終目的都是方便軟件開發(fā)過程中的合作,因此,需要考慮使用它的特定人群的需求,而不是互聯(lián)網(wǎng)流傳的「成功」的東西。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Git
    Git
    +關注

    關注

    0

    文章

    205

    瀏覽量

    16210
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    主流版本控制工具Git vs Perforce P4:架構(gòu)模式、性能、大文件管理及分支管理對比詳解

    Git vs Perforce P4,如何選型?架構(gòu)模式、性能、大文件管理、分支策略四大維度對比,幫你全面了解兩者的核心差異,選擇更合適你團隊需求的版本控制系統(tǒng)。
    的頭像 發(fā)表于 06-13 14:52 ?199次閱讀
    主流版本控制工具<b class='flag-5'>Git</b> vs Perforce P4:架構(gòu)模式、性能、大文件管理及分支管理對比詳解

    Intel為什么在2015年收購Altera?現(xiàn)在又為什么拋棄Altera

    在寫這篇文章時,我想了很多標題,但總感覺沒有哪個能把文章的意思全都總結(jié)清楚的,所以我又起了副標題:斷臂求生的Intel。 要講清楚Intel為什么要收購Altera,現(xiàn)在又為什么拋棄,需要從很多
    的頭像 發(fā)表于 02-07 11:22 ?807次閱讀
    Intel為什么在2015年收購Altera?現(xiàn)在又為什么<b class='flag-5'>拋棄</b>Altera

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-移植前準備之git管理內(nèi)核源碼

    我們前邊已經(jīng)介紹過Git工具,是一個非常實用的代碼管理工具。如果驗證編譯出的內(nèi)核能夠正常啟動,就可以將源碼用git工具管理起來??梢郧宄牧私庠创a改動記錄。如果不小心把源碼改亂了還可以進行版本
    發(fā)表于 01-23 10:51

    AMD Versal自適應SoC器件Advanced Flow概覽(下)

    在 AMD Vivado Design Suite 2024.2 版本中,Advanced Flow 自動為所有 AMD Versal 自適應 SoC 器件啟用。請注意,Advanced Flow
    的頭像 發(fā)表于 01-23 09:33 ?715次閱讀
    AMD Versal自適應SoC器件Advanced <b class='flag-5'>Flow</b>概覽(下)

    飛凌嵌入式ElfBoard ELF 1板卡-移植前準備之git管理內(nèi)核源碼

    我們前邊已經(jīng)介紹過Git工具,是一個非常實用的代碼管理工具。如果驗證編譯出的內(nèi)核能夠正常啟動,就可以將源碼用git工具管理起來??梢郧宄牧私庠创a改動記錄。如果不小心把源碼改亂了還可以進行版本
    發(fā)表于 01-22 10:39

    FinFet Process Flow-源漏極是怎樣形成的

    本文介紹了FinFet Process Flow-源漏極是怎樣形成的。 在FinFET制造工藝中,當完成偽柵極結(jié)構(gòu)后,接下來的關鍵步驟是形成源漏極(Source/Drain)。這一階段對于確保器件
    的頭像 發(fā)表于 01-17 11:00 ?1166次閱讀
    FinFet Process <b class='flag-5'>Flow</b>-源漏極是怎樣形成的

    AMD Versal自適應SoC器件Advanced Flow概覽(上)

    在最新發(fā)布的 AMD Vivado Design Suite 2024.2 中,引入的新特性之一是啟用了僅適用于 AMD Versal 自適應 SoC 器件的 Advanced Flow 布局布線
    的頭像 發(fā)表于 01-17 10:09 ?667次閱讀
    AMD Versal自適應SoC器件Advanced <b class='flag-5'>Flow</b>概覽(上)

    FinFet Process Flow—啞柵極的形成

    本文主要介紹FinFet Process Flow—啞柵極的形成。 ? 鰭片(Fin)的形成及其重要性 鰭片是FinFET器件三維結(jié)構(gòu)的關鍵組成部分,它類似于魚鰭的形狀,因此得名。鰭片的高度直接決定
    的頭像 發(fā)表于 01-14 13:55 ?769次閱讀
    FinFet Process <b class='flag-5'>Flow</b>—啞柵極的形成

    飛凌嵌入式ElfBoard ELF 1板卡-git管理源碼之git安裝和使用

    git是什么?git是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理,也是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件
    發(fā)表于 01-14 09:08

    云服務器 Flexus X 實例:部署 Gitea,擁有自己的 Git 倉庫,管理本地代碼

    本篇文章通過部署 Gitea,實現(xiàn)本地 Git 倉庫,真實體驗了“云服務器 Flexus X 實例”,深感其卓越性能與靈活性。這款實例以其六倍于常的強勁算力,搭配旗艦級的操作體驗,廣泛適用于高科技
    的頭像 發(fā)表于 01-07 16:59 ?408次閱讀
    云服務器 Flexus X 實例:部署 Gitea,擁有自己的 <b class='flag-5'>Git</b> 倉庫,管理本地代碼

    Flexus X 實例 C#/.Net Core 結(jié)合(git 代碼管理、docker 自定義鏡像)快速發(fā)布部署 - 讓你的項目飛起來~

    前言 ???云端部署新體驗,C# Web API 遇上 Git Docker,828 B2B 企業(yè)節(jié)特惠來襲!Flexus X 實例,為您的 C#應用提供強大支撐,結(jié)合 Git 版本控制
    的頭像 發(fā)表于 12-25 21:15 ?590次閱讀
    Flexus X 實例 C#/.Net Core 結(jié)合(<b class='flag-5'>git</b> 代碼管理、docker 自定義鏡像)快速發(fā)布部署 - 讓你的項目飛起來~

    U50的AMD Vivado Design Tool flow設置

    AMD Alveo 加速卡使用有兩種流程,AMD Vitis Software Platform flow 和 AMD Vivado Design Tool flow。比較常見的是 Vitis
    的頭像 發(fā)表于 11-13 10:14 ?853次閱讀
    U50的AMD Vivado Design Tool <b class='flag-5'>flow</b>設置

    如何配置PCM3168使其在A/D發(fā)生over flow時,不要自動調(diào)節(jié)增益?

    自動改變A/D的輸入增益,但從現(xiàn)象上看確實是PCM3168自己在調(diào)節(jié)。 請問是否有人知道如何配置PCM3168使其在A/D發(fā)生over flow時,不要自動調(diào)節(jié)增益?
    發(fā)表于 11-06 06:11

    請問TAS5754m在使用ROM flow時,I2S可以支持到96KHz嗎?

    請問TAS5754m在使用ROM flow時,I2S可以支持到96KHz嗎?
    發(fā)表于 10-22 08:28

    星河智聯(lián)發(fā)布FLOW.源大模型座艙系統(tǒng),引領智能出行新紀元

    在智能網(wǎng)聯(lián)汽車技術日新月異的今天,星河智聯(lián)正式推出了其智能座艙操作系統(tǒng)的最新代際產(chǎn)品——FLOW.源大模型座艙系統(tǒng)。這一創(chuàng)新成果不僅標志著星河智聯(lián)在智能座艙領域的技術突破,也預示著汽車人機交互體驗將邁入一個全新的時代。
    的頭像 發(fā)表于 07-19 17:07 ?1456次閱讀