5 個 Git 工作流,改善你的開發(fā)流程

原文地址:5 Git workflows you can use to deliver better code and improve your development process[1] 原文作者:Vikash Koushik 譯者:陳元 校對者:HelloGitHub-丫丫
我還沒有遇到過一個開發(fā)人員,在查看 Git 分支合并的沖突信息時不抓耳撓腮。
解決 Git 合并沖突是每個開發(fā)人員都討厭的事情之一,尤其是當(dāng)你準(zhǔn)備進(jìn)行生產(chǎn)環(huán)境部署時!
正確的設(shè)置 Git 工作流可以改善你的 開發(fā)流程[2] 。
當(dāng)然,擁有正確的 Git 工作流并不能解決你的所有問題。但這是朝正確方向邁出的一步。畢竟,由于每個團(tuán)隊(duì)都是遠(yuǎn)程工作的,在不破壞代碼庫的情況下共同開發(fā)產(chǎn)品功能是非常重要的。
如何設(shè)置 Git 工作流取決于你正在開發(fā)的項(xiàng)目、團(tuán)隊(duì)的發(fā)布計(jì)劃、團(tuán)隊(duì)的規(guī)模等等!
在本文中,我們將向你介紹 5 種不同的 Git 工作流,它們的優(yōu)點(diǎn),缺點(diǎn)以及使用它們的時機(jī)。讓我們開始吧!
1. 基本的 Git 工作流
最基本的 Git 工作流是只有一個分支 - master 分支的模式。開發(fā)人員直接提交 master 分支并使用它來部署到預(yù)發(fā)布和生產(chǎn)環(huán)境。

上圖為基本的 Git 工作流,所有提交都直接添加到 master 分支。
通常不建議使用此工作流,除非你正在開發(fā)一個 side 項(xiàng)目并且希望快速開始。
由于只有一個分支,因此這里實(shí)際上沒有任何流程。這樣一來,你就可以輕松開始使用 Git。但是,使用此工作流時需要記住它的一些缺點(diǎn):
在代碼上進(jìn)行協(xié)作將導(dǎo)致多種沖突。 生產(chǎn)環(huán)境出現(xiàn) bug 的概率會大增。 維護(hù)干凈的代碼將更加困難。
2. Git 功能分支工作流
當(dāng)你有多個開發(fā)人員在同一個代碼庫上工作時,Git 功能分支工作流將成為必選項(xiàng)。
假設(shè)你有一個正在開發(fā)一項(xiàng)新功能的開發(fā)人員。另一個開發(fā)人員正在開發(fā)第二個功能。現(xiàn)在,如果兩個開發(fā)人員都向同一個分支提交代碼,這將使代碼庫陷入混亂,并產(chǎn)生大量沖突。

上圖為具有功能分支的 Git 工作流模型。
為避免這種情況,兩個開發(fā)人員可以分別從 master 分支創(chuàng)建兩個單獨(dú)的分支,并分別開發(fā)其負(fù)責(zé)的功能。完成功能后,他們可以將各自的分支合并到 master 分支,然后進(jìn)行部署,而不必等待對方的功能開發(fā)完成。
使用此工作流的優(yōu)點(diǎn)是,Git 功能分支工作流使你可以在代碼上進(jìn)行協(xié)作,而不必?fù)?dān)心代碼沖突。
3. 帶有 Develop 分支的 Git 功能分支工作流
此工作流是開發(fā)團(tuán)隊(duì)中比較流行的工作流之一。它與 Git 功能分支工作流相似,但它的 develop 分支與 master 分支并行存在。
在此工作流中,master 分支始終代表生產(chǎn)環(huán)境的狀態(tài)。每當(dāng)團(tuán)隊(duì)想要部署代碼到生產(chǎn)環(huán)境時,他們都會部署 master 分支。
Develop 分支代表針對下一版本的最新交付的代碼。開發(fā)人員從 develop 分支創(chuàng)建新分支,并開發(fā)新功能。功能開發(fā)完畢后,將對其進(jìn)行測試,與 develop 分支合并,在合并了其他功能分支的情況下使用 develop 分支的代碼進(jìn)行測試,然后與 master 分支合并。

上圖為具有 develop 分支的 Git 功能分支工作流模型。
此工作流的優(yōu)點(diǎn)是,它使團(tuán)隊(duì)能夠一致地合并所有新功能,在預(yù)發(fā)布階段對其進(jìn)行測試并部署到生產(chǎn)環(huán)境中。盡管這種工作流讓代碼維護(hù)變得更加容易,但是對于某些團(tuán)隊(duì)來說,這樣做可能會感到有些疲倦,因?yàn)轭l繁的 Git 操作可能會讓你感到乏味。
4. Gitflow 工作流
Gitflow 工作流與我們之前討論的工作流非常相似,我們將它們與其他兩個分支( release 分支和 hot-fix 分支)結(jié)合使用。
4.1 Hot-Fix 分支
Hot-fix 分支是唯一一個從 master 分支創(chuàng)建的分支,并且直接合并到 master 分支而不是 develop 分支。僅在必須快速修復(fù)生產(chǎn)環(huán)境問題時使用。該分支的一個優(yōu)點(diǎn)是,它使你可以快速修復(fù)并部署生產(chǎn)環(huán)境的問題,而無需中斷其他人的工作流,也不必等待下一個發(fā)布周期。
將修復(fù)合并到 master 分支并進(jìn)行部署后,應(yīng)將其合并到 develop 和當(dāng)前的 release 分支中。這樣做是為了確保任何從 develop 分支創(chuàng)建新功能分支的人都具有最新代碼。
4.2 Release 分支
在將所有準(zhǔn)備發(fā)布的功能的代碼成功合并到 develop 分支之后,就可以從 develop 分支創(chuàng)建 release 分支了。
Release 分支不包含新功能相關(guān)的代碼。僅將與發(fā)布相關(guān)的代碼添加到 release 分支。例如,與此版本相關(guān)的文檔,錯誤修復(fù)和其他關(guān)聯(lián)任務(wù)才能添加到此分支。
一旦將此分支與 master 分支合并并部署到生產(chǎn)環(huán)境后,它也將被合并回 develop 分支中,以便之后從 develop 分支創(chuàng)建新功能分支時,新的分支能夠具有最新代碼。

上圖為具有 hot-fix 和 release 分支的 Gitflow 工作流模型
此工作流由 Vincent Driessen[3] 首次發(fā)布并廣受歡迎,已被具有預(yù)定發(fā)布周期的組織廣泛使用。
由于 git-flow 是對 Git 的包裝,因此你可以為當(dāng)前代碼庫安裝 git-flow。git-flow 非常簡單,除了為你創(chuàng)建分支外,它不會更改代碼庫中的任何內(nèi)容。
要在 Mac 機(jī)器上安裝 ,請?jiān)诮K端中執(zhí)行 brew install git-flow 。
要在 Windows 機(jī)器上安裝,你需要 下載并安裝 git-flow[4] 。安裝完成后,運(yùn)行 git flow init 命令,就可以在項(xiàng)目中使用它了。
5. Git Fork 工作流
Fork 工作流在使用開源軟件的團(tuán)隊(duì)中很流行。
該流程通常如下所示:
開發(fā)人員 fork 開源軟件的官方代碼庫。在他們的帳戶中創(chuàng)建此代碼庫的副本。 然后,開發(fā)人員將代碼庫從其帳戶克隆到本地系統(tǒng)。 官方代碼庫的遠(yuǎn)端源已添加到克隆到本地系統(tǒng)的代碼庫中。 開發(fā)人員創(chuàng)建一個新的功能分支,該分支將在其本地系統(tǒng)中創(chuàng)建,進(jìn)行更改并提交。 這些更改以及分支將被推送到其帳戶上開發(fā)人員的代碼庫副本。 從該新功能分支創(chuàng)建一個 pull request,提交到官方代碼庫。 官方代碼庫的維護(hù)者檢查 pull request 中的修改并批準(zhǔn)將這些修改合并到官方代碼庫中。
你自己的工作流!
我在本文中描述的 Git 工作流是一些在開發(fā)團(tuán)隊(duì)中非常流行和最佳的工作流的示例。也有一些團(tuán)隊(duì)為預(yù)發(fā)布創(chuàng)建分支,并且該分支非常適合他們。所以你可以參考這些工作流,然后創(chuàng)建自己的 Git 工作流。
本文使用免費(fèi)文檔翻譯工具 Breword 進(jìn)行翻譯,它支持:機(jī)器預(yù)翻譯、可視化編輯器、協(xié)作翻譯、審校、一鍵生成文檔網(wǎng)站、自動監(jiān)測文檔更新、導(dǎo)出等。讓翻譯工作變得更加簡單、高效、可維護(hù),快去試試吧!
breword 官網(wǎng):https://www.breword.com/
參考資料
5 Git workflows you can use to deliver better code and improve your development process: https://zepel.io/blog/5-git-workflows-to-improve-development/
[2]開發(fā)流程: https://zepel.io/blog/simple-software-development-workflow/
[3]Vincent Driessen: http://nvie.com/posts/a-successful-git-branching-model/
[4]下載并安裝 git-flow: https://git-scm.com/download/win

優(yōu)質(zhì)文章,推薦閱讀:

