大型开发项目中 git 工作流的最佳实践
Gitflow Workflow 是一個 Git 工作流,有助于持續(xù)軟件開發(fā)和實施 DevOps 實踐。 它由文森特·德里森 (Vincent Driessen) 在 nvie 首次出版并廣受歡迎。 Gitflow 工作流定義了圍繞項目發(fā)布設(shè)計的嚴格分支模型。 這為管理大型項目提供了一個強大的框架。
Gitflow 非常適合具有預(yù)定發(fā)布周期的項目以及持續(xù)交付的 DevOps 最佳實踐。 除了功能分支工作流所需的內(nèi)容之外,此工作流不會添加任何新概念或命令。 相反,它為不同的分支分配非常具體的角色,并定義它們應(yīng)該如何以及何時交互。 除了功能(feature)分支之外,它還使用單獨的分支來準備、維護和記錄發(fā)布。 當然,您還可以利用 Feature Branch Workflow 的所有優(yōu)勢:拉取請求、獨立實驗和更高效的協(xié)作。
Getting Started
Gitflow 實際上只是 Git 工作流的一個抽象概念。 這意味著它決定了要設(shè)置什么樣的分支以及如何將它們合并在一起。 我們將觸及以下分支的目的。 git-flow 工具集是一個具有安裝過程的實際命令行工具。 git-flow 的安裝過程很簡單。 git-flow 軟件包可在多個操作系統(tǒng)上使用。 在 OSX 系統(tǒng)上,您可以執(zhí)行 brew install git-flow。 在 Windows 上,您需要下載并安裝 git-flow。 安裝 git-flow 后,您可以通過執(zhí)行 git flow init 在您的項目中使用它。 Git-flow 是 Git 的包裝器。 git flow init 命令是默認 git init 命令的擴展,除了為您創(chuàng)建分支外,不會更改存儲庫中的任何內(nèi)容。
How it works
Develop and Main Branches
此工作流使用兩個分支來記錄項目的歷史記錄,而不是單個 main 分支。 Main 存儲官方發(fā)布歷史,開發(fā)分支作為功能的集成分支。 用版本號標記主分支中的所有提交也很方便。
第一步是用一個 develop 分支補充默認的主分支。 一種簡單的方法是讓開發(fā)人員在本地創(chuàng)建一個空的 develop 分支并將其推送到服務(wù)器:
git branch develop git push -u origin develop該分支將包含項目的完整歷史記錄,而 main 將包含一個刪節(jié)版本。 其他開發(fā)人員現(xiàn)在應(yīng)該克隆中央存儲庫并為 develop branch 創(chuàng)建一個跟蹤分支。
Feature Branches
每個新功能都應(yīng)該駐留在自己的分支中,可以將其推送到中央存儲庫進行備份/協(xié)作。 但是,feature 分支不是從 main 分支出來,而是使用 develop 作為它們的父分支。 當一個功能完成時,它會被合并回 develop branch 。 功能不應(yīng)該直接與 main branch 交互。
請注意, feature 分支與 develop 分支相結(jié)合,就所有意圖和目的而言,都是功能分支工作流。 但是,Gitflow 工作流并不止于此。
feature 分支通常基于最新的開發(fā)分支創(chuàng)建。
Creating a feature branch
git checkout develop git checkout -b feature_branchFinishing a feature branch
當您完成該功能的開發(fā)工作后,下一步是將 feature_branch 合并到 develop 中。
git checkout develop git merge feature_branchRelease Branches
一旦 develop 獲得了足夠的發(fā)布功能(或預(yù)定的發(fā)布日期即將到來),您就可以從 develop 中分出一個 release 分支。創(chuàng)建此分支將啟動下一個發(fā)布周期,因此在此之后不能添加任何新功能——只有錯誤修復(fù)、文檔生成和其他面向發(fā)布的任務(wù)應(yīng)該在此分支中進行。
一旦準備好發(fā)布, release 分支就會合并到 main 分支并標記一個版本號。此外,它應(yīng)該合并回 develop branch,自發(fā)布開始以來,后者可能已經(jīng)取得了進展。
使用一個專門的分支來準備發(fā)布可以讓一個團隊完善當前版本,而另一個團隊繼續(xù)為下一個版本開發(fā)功能。它還創(chuàng)建了明確定義的開發(fā)階段(例如,很容易說“本周我們正在為 4.0 版做準備”,并在存儲庫的結(jié)構(gòu)中實際看到它)。
制作 release 分支是另一個簡單的分支操作。與功能分支一樣,release 分支基于 develop 分支。可以使用以下方法創(chuàng)建新的發(fā)布分支。
git checkout develop git checkout -b release/0.1.0一旦發(fā)布準備好發(fā)布,它將合并到 main 和 develop,然后Release 分支將被刪除。 合并回 develop 很重要,因為關(guān)鍵更新可能已添加到 Release 分支,并且需要新功能可以訪問它們。如果您的組織強調(diào)代碼審查,這將是拉取請求的理想場所。
要完成發(fā)布分支,請使用以下方法:
git checkout main git merge release/0.1.0Hotfix Branches
Maintenance 或“hotfix”分支用于快速修補生產(chǎn)版本。 Hotfix 分支很像 release 分支和 feature 分支,只是它們基于 main 而不是 develop。 這是唯一應(yīng)該直接從 main 分叉出來的分支。 修復(fù)完成后,應(yīng)將其合并到 main 和 develop(或當前 release 分支)中,并且 main 應(yīng)使用更新的版本號進行標記。
擁有專門的錯誤修復(fù)開發(fā)線,您的團隊可以在不中斷工作流程的其余部分或等待下一個發(fā)布周期的情況下解決問題。 您可以將 Maintenance 分支視為直接與 main 一起工作的臨時 release 分支。 可以使用以下方法創(chuàng)建修補程序分支:
git checkout main git checkout -b hotfix_branch類似于完成發(fā)布分支,修補程序分支合并到主分支和開發(fā)分支。
git checkout main git merge hotfix_branch git checkout develop git merge hotfix_branch git branch -D hotfix_branch總結(jié)
- develop 分支是從 main 分支創(chuàng)建的
- 從 develop 創(chuàng)建一個 Release 分支
- feature 分支是從 develop 創(chuàng)建的
- 當一個功能完成時,它會被合并到 develop 分支中
- release 分支完成后,它會合并到 develop 和 main
- 如果在 main 中檢測到問題,則從 main 創(chuàng)建一個 hotfix 程序分支
- 修補程序完成后,它將合并到 develop 和 main 分支
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的大型开发项目中 git 工作流的最佳实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装台丹姐的扮演者
- 下一篇: 7. QFile读写文件的基本操作「建议