簡體   English   中英

GitFlow:發布分支和主分支有什么區別?

[英]GitFlow: what is difference between release and master branches?

我剛剛查看了這個 gitflow 備忘單 我不明白release分支。

誰能告訴我release分支和master分支之間的區別?

區別在於目標和過程。 當您准備即將發布的版本時,通常會創建release分支。 當您應該發布的所有feature分支都已經合並到develop分支時,您從develop分支創建release分支並僅提交錯誤修復或一些配置更改。 換句話說,您嘗試使其盡可能穩定。 當希望release分支足夠穩定時,您可以將其合並回developmaster分支。 master分支的目的是始終擁有可以部署到生產環境的項目的最新穩定版本。 您永遠不會直接提交到 master 分支,只能從releasehotfix分支合並到它。 還可以配置 CI/CD 工具,以便在master分支中的任何更新上部署到生產環境。

一旦你想要在你的版本中擁有的所有特性都在開發中,而不是“鎖定”開發到任何新的提交,你創建一個 relase 分支,它將包含你下一個版本中預期的所有特性(而不是在 master 中,因為你的整個版本應該被測試並且可能會有一些錯誤修復......)。

  • 在這個分支中,您只有錯誤修復、文檔等...但沒有新功能
  • 你的開發分支沒有被鎖定,所以下一個版本的新特性仍然可以提交/推送到開發和測試。
  • 發布分支非常適合部署在 staging/pre-prod 環境中,並讓 QA 測試您的發布。
  • 發布分支穩定后,您可以將其合並到 master 並轉到 prod。 大師應該永遠穩定和穩定(如果不是你做修補程序)。

您可以查看這些鏈接以獲得進一步的解釋:

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow http://nvie.com/posts/a-successful-git-branching-model/#feature-branches

我認為您的問題來自我經常看到的對 GitFlow 的誤解。 所以值得揭穿它。

在 GitFlow 中,發布分支是短暫的。 它們用於准備發布。 發布分支的好處是它可以讓一個團隊完善當前即將發布的版本,而另一個團隊繼續為下一個版本開發功能。 相反, master分支永遠存在。

在 GitFlow 中,您不會從發布分支發布到生產環境。 這不是發布分支的用途。 誤解可能來自“發布分支”這個名稱。 master分支必須反映實際的生產價值發布。 您將發布分支合並到master分支,然后從master分支發布(即創建工件)用於生產環境。 用於生產環境的工件總是源自 GitFlow 中的master分支。 您不能在任何其他分支的生產環境中擁有工件。 本質上,每次合並到master都是 GitFlow 模型中的一個新的官方版本。

一旦發布結束(一旦你將它合並到master ),發布分支就會再次消失,我發現從隨后不久被刪除的分支發布到生產環境是災難性的。

對某些人來說,以上似乎是有爭議的。 但我認為這是原始論文中描述的經典 GitFlow 思想。 您會發現有些人實際上是從他們的發布分支中創建構建工件,然后他們將其放入生產環境中。 當他們看到它有效時,他們也會返回並將其合並到master中。 (否則他們會忘記這一步)。 我不認為那是 GitFlow。

部署到生產環境中的工件來自另一個分支而不是master的工作流根本不是 GitFlow。 對於某些人來說,這可能是一個很好的工作流程,它可能有它的優勢,但它不是 GitFlow。

所以簡而言之,這是經典的 GitFlow,您可以清楚地看到發布分支和master分支之間的區別:

  1. 在名為release/<something>的分支上准備發布。
  2. 准備發布時:將發布分支合並到master中。 然后刪除您的發布分支(它不再有目的)。
  3. 使用版本號標記master ,例如5.9.1
  4. master上的標簽創建可部署的工件。 您現在有一個版本(可能用於生產環境)。 您現在在所有環境中測試這些工件:測試、登台等。如果測試失敗(盡管您在合並到master之前已經完成了測試),那么您必須接受您現在有一個5.9.1版本廢紙簍。 和它一起生活! 然后,您必須從新的發布分支重新開始,例如release/5.9.2
  5. 您最終可以將測試的工件放入生產環境。 如果事實證明新版本在生產環境中存在問題(盡管進行了所有測試),那么您必須再次創建一個新版本 這意味着您可以從新的發布分支重新開始,或者遵循修補程序工作流模型。

可以看出,在 GitFlow 中,一旦你合並到master ,你可能已經做了很多測試,因此從master創建的版本在測試中失敗的風險很小。

請注意,GitFlow 當然不會阻止您從除master之外的所有其他分支創建工件並將它們部署到任何環境(生產環境除外)以進行測試。

release后, release分支將被刪除,但master將保持穩定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM