Git源碼管理方案對比

Git 是目前最流行的源代碼管理工具,Git分支管理可以很靈活,但目前主流的分支官方方式主要有3種,本文對幾種主流的 Git 分支管理實踐進(jìn)行了介紹,可以幫助開發(fā)團(tuán)隊選擇自己最合適的方案。


1,單主干

單主干的分支實踐(Trunk-based development,TBD)在 SVN 中比較流行。Google 和 Facebook 都使用這種方式。trunk 是 SVN 中主干分支的名稱,對應(yīng)到 Git 中則是 master 分支。TBD 的特點是所有團(tuán)隊成員都在單個主干分支上進(jìn)行開發(fā)。當(dāng)需要發(fā)布時,先考慮使用標(biāo)簽(tag),即 tag 某個 commit 來作為發(fā)布的版本。如果僅靠 tag 不能滿足要求,則從主干分支創(chuàng)建發(fā)布分支。bug 修復(fù)在主干分支中進(jìn)行,再 cherry-pick 到發(fā)布分支。

TBD 中的分支流程的示意圖

2,Github flow

GitHub flow 是 GitHub 所使用的一種簡單的流程。該流程只使用兩類分支,并依托于 GitHub 的 pull request 功能。在 GitHub flow 中,master 分支中包含穩(wěn)定的代碼。該分支已經(jīng)或即將被部署到生產(chǎn)環(huán)境。master 分支的作用是提供一個穩(wěn)定可靠的代碼基礎(chǔ)。任何開發(fā)人員都不允許把未測試或未審查的代碼直接提交到 master 分支。

對代碼的任何修改,包括 bug 修復(fù)、hotfix、新功能開發(fā)等都在單獨的分支中進(jìn)行。不管是一行代碼的小改動,還是需要幾個星期開發(fā)的新功能,都采用同樣的方式來管理。當(dāng)需要進(jìn)行修改時,從 master 分支創(chuàng)建一個新的分支。新分支的名稱應(yīng)該簡單清晰地描述該分支的作用。所有相關(guān)的代碼修改都在新分支中進(jìn)行。開發(fā)人員可以自由地提交代碼和 push 到遠(yuǎn)程倉庫。

當(dāng)新分支中的代碼全部完成之后,通過 GitHub 提交一個新的 pull request。團(tuán)隊中的其他人員會對代碼進(jìn)行審查,提出相關(guān)的修改意見。由持續(xù)集成服務(wù)器(如 Jenkins)對新分支進(jìn)行自動化測試。當(dāng)代碼通過自動化測試和代碼審查之后,該分支的代碼被合并到 master 分支。再從 master 分支部署到生產(chǎn)環(huán)境


Github flow 中的分支流程的示意圖

3, Git Flow

3.1,Git Flow簡介

Git Flow是構(gòu)建在Git之上的一個組織軟件開發(fā)活動的模型,是在Git之上構(gòu)建的一項軟件開發(fā)最佳實踐。Git Flow是一套使用Git進(jìn)行源代碼管理時的一套行為規(guī)范和簡化部分Git操作的工具。

2010年5月,在一篇名為《一種成功的Git分支模型的博文中》,@nvie介紹了一種在Git之上的軟件開發(fā)模型。通過利用Git創(chuàng)建和管理分支的能力,為每個分支設(shè)定具有特定的含義名稱,并將軟件生命周期中的各類活動歸并到不同的分支上。實現(xiàn)了軟件開發(fā)過程不同操作的相互隔離。這種軟件開發(fā)的活動模型被nwie稱為“Git Flow”。

一般而言,軟件開發(fā)模型有常見的瀑布模型、迭代開發(fā)模型、以及最近出現(xiàn)的敏捷開發(fā)模型等不同的模型。每種模型有各自應(yīng)用場景。Git Flow重點解決的是由于源代碼在開發(fā)過程中的各種沖突導(dǎo)致開發(fā)活動混亂的問題。因此,Git Flow可以很好的于各種現(xiàn)有開發(fā)模型相結(jié)合使用。

在開始研究Git Flow的具體內(nèi)容前,下面這張圖可以看到模型的全貌:


git-flow 中的分支流程的示意圖

3.2,Git Flow 流程

Git Flow 流程中包含 5 類分支,分別是 master、develop、新功能分支(feature)、發(fā)布分支(release)和 hotfix。這些分支的作用和生命周期各不相同。

- master 分支中包含的是可以部署到生產(chǎn)環(huán)境中的代碼,這一點和 GitHub flow 是相同的。

- develop 分支中包含的是下個版本需要發(fā)布的內(nèi)容。從某種意義上來說,develop 是一個進(jìn)行代碼集成的分支。

- 從 develop 分支創(chuàng)建一個新的 feature 分支,如 feature/my-awesome-feature。

- 在該 feature 分支上進(jìn)行開發(fā),提交代碼,push 到遠(yuǎn)端倉庫。

- 當(dāng)代碼完成之后,合并到 develop 分支并刪除當(dāng)前 feature 分支。

- 當(dāng) develop 分支集成了足夠的新功能和 bug 修復(fù)代碼之后,從 develop 分支創(chuàng)建一個新的 release 分支,如 release/1.4。

- 把 release 分支部署到持續(xù)集成服務(wù)器上進(jìn)行測試。測試包括自動化集成測試和手動的用戶接受測試。對于測試中發(fā)現(xiàn)的問題,直接在 release 分支上提交修改。完成修改之后再次部署和測試。

- 當(dāng) release 分支中的代碼通過測試之后,把 release 分支合并到 develop 和 master 分支,并在 master 分支上添加相應(yīng)的 tag。

3.3,Git Flow工具

Git Flow命令行工具可以使用腳本快速創(chuàng)建、合并各類分支。

sourcetree也內(nèi)置支持Git Flow。


SourceTree中Git Flow入口



Git Flow更詳細(xì)介紹:企業(yè)級開發(fā):Gitflow Workflow工作流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內(nèi)容

  • 1 Git Flow介紹 我們都知道, 在 git 的分支功能相對 svn 確實方便許多,而且也非常推薦使用分支來...
    七寸知架構(gòu)閱讀 7,900評論 20 68
  • 多種多樣的工作流使得在項目中實施Git時變得難以選擇。這份教程提供了一個出發(fā)點,調(diào)查企業(yè)團(tuán)隊最常見的Git工作流。...
    JSErik閱讀 4,450評論 2 8
  • Git FLow是什么 Git Flow是構(gòu)建在Git之上的一個組織軟件開發(fā)活動的模型,也是軟件開發(fā)過程中一種成功...
    華枯榮閱讀 2,269評論 2 10
  • 最大的問題出現(xiàn)了:老公說我每天跟他說正面管教的理念,他的感受就像我姥姥每天讓我信神我的感受一樣。這太可怕了...
    小惠_a7bf閱讀 164評論 0 0
  • 寫在正文之前: 羅小妞是我的大學(xué)室友兼閨蜜,去年的7、8月,她享受到了大學(xué)畢業(yè)后的第一個寒暑假,是的,她成了一名老...
    卿瘋閱讀 1,277評論 3 11