在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Git Flow應(yīng)該拋棄的原因

汽車玩家 ? 來源:雷鋒網(wǎng) ? 作者:skura ? 2020-03-21 13:41 ? 次閱讀

導(dǎo)語:或許,Git-flow 分支模型應(yīng)該葬身火海 。

Git-flow 是一種分支和合并方法。十年前,因?yàn)橐黄麨椤敢粋€(gè)成功的 Git 分支模型」的文章,Git-flow 變得廣為人知。

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

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

很多人會(huì)相信看到的博文,這其實(shí)是錯(cuò)誤的。并非所有的策略都適用于所有情況,這是一個(gè)真理。我將同樣的邏輯應(yīng)用于這個(gè)分支模型。

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

Git-flow 的界面很復(fù)雜

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

Git Flow應(yīng)該拋棄的原因

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

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

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

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

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

這太糟糕了。

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

Git-flow 放棄了rebase

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

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

持續(xù)交付是一種實(shí)踐。在這種實(shí)踐中,團(tuán)隊(duì)以自動(dòng)化的方式直接發(fā)布到生產(chǎn)中(實(shí)際上是合并到 master)。看看混亂的 Git-flow,你能解釋一下如何持續(xù)地交付嗎?

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

在多個(gè)存儲(chǔ)庫中不可能使用 Git-flow

隨著微服務(wù)的出現(xiàn),micro-repo 的理念也得到了更多的推動(dòng),各個(gè)團(tuán)隊(duì)可以控制他們的存儲(chǔ)庫和工作流,他們還可以控制誰進(jìn)入了他們的存儲(chǔ)庫以及其工作流是如何工作的。

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

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

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

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

誰應(yīng)該/不應(yīng)該使用 Git-flow?

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

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

如果不應(yīng)該使用 Git-flow,那應(yīng)該用什么?

我不能回答。并非所有分支模型都適用于所有團(tuán)隊(duì)和所有情況。如果你練習(xí) CD,你需要一些盡可能簡(jiǎn)化過程的東西。

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

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

    關(guān)注

    0

    文章

    203

    瀏覽量

    16035
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

    我們前邊已經(jīng)介紹過Git工具,是一個(gè)非常實(shí)用的代碼管理工具。如果驗(yàn)證編譯出的內(nèi)核能夠正常啟動(dòng),就可以將源碼用git工具管理起來。可以清楚的了解源碼改動(dòng)記錄。如果不小心把源碼改亂了還可以進(jìn)行版本
    發(fā)表于 01-22 10:39

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

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

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

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

    FinFet Process Flow—啞柵極的形成

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

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

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

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

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

    U50的AMD Vivado Design Tool flow設(shè)置

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

    請(qǐng)問TAS5754m在使用ROM flow時(shí),I2S可以支持到96KHz嗎?

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

    ESP_RTOS_SDK git select返回-1,errno卻是0,為什么?

    我使用的是ESP_RTOS_SDK git上170316的版本 在多次操作TCP時(shí),偶爾select會(huì)返回-1,但得到的errno是0,同時(shí)select無法做到讓出cpu 這是什么原因呢?是不是
    發(fā)表于 07-11 08:23

    ESP8266 ESP_IDF編譯時(shí)出現(xiàn)警告的原因

    /windows-setup.html 編譯時(shí)出現(xiàn)下面這些警告,是什么原因,是否影響正常的編譯? 可否屏蔽??? fatal: 不是一個(gè) git 倉庫(或者任何父目錄):.git WARNING: Toolchain
    發(fā)表于 07-09 07:42

    ubuntu下的vscode插件安裝idf時(shí),總是找不到git,為什么?

    總是提示:Git is not found in current environment 但是我已經(jīng)在setting.json下設(shè)置了\"git.path\": \"/bin/git\" 同行,命令行里查看
    發(fā)表于 06-21 07:16

    通過git命令獲取ESP8266_RTOS_SDK失敗如何解決?

    本人使用的硬件平臺(tái)為esp8266,開發(fā)環(huán)境為ubuntu22.04。在通過git命令獲取ESP8266_RTOS_SDK失敗,通過上網(wǎng)搜索嘗試了很多方法無效。具體情況如下
    發(fā)表于 06-07 07:26

    請(qǐng)問下使用IDF怎么做用git做版本控制?

    請(qǐng)問下使用IDF怎么做用git做版本控制?是保存自己應(yīng)用部分的代碼還是整個(gè)SDK都要保存,但是整個(gè)框架都是官方下的,有沒必要保存,求各位大神告知下你們?cè)趺刺幚淼摹?/div>
    發(fā)表于 06-06 07:15

    Git發(fā)布新版本 修補(bǔ)五處安全漏洞 包含嚴(yán)重遠(yuǎn)程代碼執(zhí)行風(fēng)險(xiǎn)

    CVE-2024-32002漏洞的嚴(yán)重性在于,黑客可通過創(chuàng)建特定的Git倉庫子模塊,誘騙Git將文件寫入.git/目錄,而非子模塊的工作樹。如此一來,攻擊者便能在克隆過程中植入惡意腳本,用戶幾乎無法察覺。
    的頭像 發(fā)表于 05-31 10:09 ?770次閱讀
    主站蜘蛛池模板: 国产婷婷综合丁香亚洲欧洲 | 亚洲午夜免费视频 | h黄色| 亚洲国产精品婷婷久久久久 | 婷婷色九月综合激情丁香 | 婷婷久久综合九色综合98 | 国产女主播精品大秀系列在线 | 免费啪视频在线观看 | 国产黄色录像视频 | 性欧美护士18xxxxhd | 婷婷六月丁香午夜爱爱 | 一级片aaaa| 国产色婷婷精品免费视频 | 欧美超级碰碰 | 丁香在线视频 | 六月丁香啪啪六月激情 | 国产精品成人在线播放 | 中国又粗又大又爽的毛片 | 免费在线观看的网站 | 免费看啪啪的网站 | 伊人啪啪 | 丁香花在线视频 | 国产一级特黄生活片 | 992tv国产精品福利在线 | 综合婷婷 | 五月婷婷网址 | 亚洲 欧美 日韩 丝袜 另类 | 激情五月亚洲 | 国产成人小视频 | 天天做夜夜做久久做狠狠 | 国产伦子系列视频6 | 国模吧在线视频 | 西西人体www303sw大胆高清 | 大量真实偷拍情侣视频野战 | 色屋在线| 午夜污片| 欧美一区二区三区不卡视频 | 午夜欧美福利 | 国产经典三级 | 视频在线观看网站免费 | 五月婷婷激情综合网 |