[英]GitFlow: what is difference between release and master branches?
區別在於目標和過程。 當您准備即將發布的版本時,通常會創建release
分支。 當您應該發布的所有feature
分支都已經合並到develop
分支時,您從develop
分支創建release
分支並僅提交錯誤修復或一些配置更改。 換句話說,您嘗試使其盡可能穩定。 當希望release
分支足夠穩定時,您可以將其合並回develop
和master
分支。 master
分支的目的是始終擁有可以部署到生產環境的項目的最新穩定版本。 您永遠不會直接提交到 master 分支,只能從release
或hotfix
分支合並到它。 還可以配置 CI/CD 工具,以便在master
分支中的任何更新上部署到生產環境。
一旦你想要在你的版本中擁有的所有特性都在開發中,而不是“鎖定”開發到任何新的提交,你創建一個 relase 分支,它將包含你下一個版本中預期的所有特性(而不是在 master 中,因為你的整個版本應該被測試並且可能會有一些錯誤修復......)。
您可以查看這些鏈接以獲得進一步的解釋:
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
分支之間的區別:
release/<something>
的分支上准備發布。master
中。 然后刪除您的發布分支(它不再有目的)。master
,例如5.9.1
。master
上的標簽創建可部署的工件。 您現在有一個版本(可能用於生產環境)。 您現在在所有環境中測試這些工件:測試、登台等。如果測試失敗(盡管您在合並到master
之前已經完成了測試),那么您必須接受您現在有一個5.9.1
版本廢紙簍。 和它一起生活! 然后,您必須從新的發布分支重新開始,例如release/5.9.2
。 可以看出,在 GitFlow 中,一旦你合並到master
,你可能已經做了很多測試,因此從master
創建的版本在測試中失敗的風險很小。
請注意,GitFlow 當然不會阻止您從除master
之外的所有其他分支創建工件並將它們部署到任何環境(生產環境除外)以進行測試。
release
后, release
分支將被刪除,但master
將保持穩定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.