Git工作流(Gitflow)管理

一糕韧、Gitflow工作流概述

工作流(Workflow),指“業(yè)務(wù)過程的部分或整體在計算機應(yīng)用環(huán)境下的自動化”。是對工作流程及其各操作步驟之間業(yè)務(wù)規(guī)則的抽象页滚、概括描述铺呵。
Gitflow裹驰,研發(fā)工作過程中,通過使用git進行代碼管理幻林、版本維護的工作流躏敢。Gitflow包含以下幾種工作流:

  • Centralized Workflow掘宪,集中式工作流
  • Branch Workflow鼠次,分支工作流
  • Forking Workflow更哄,F(xiàn)ork工作流

二、Centralized Workflow腥寇,集中式工作流

Git的Centralized Workflow非常友好地過度了SubVersion中的集中式工作流成翩,熟悉SVN工作流程的開發(fā)者在這方面可以非常容易地掌握Git中的這一工作流。

2.1 Centralized Workflow的概念

像Subversion一樣赦役,集中式工作流以中央倉庫作為項目所有修改的單點實體麻敌。相比SVN缺省的開發(fā)分支trunk,Git叫做master掂摔,所有修改提交到這個分支上术羔。舉個例子,本工作流只用到master這一個分支乙漓。

集中式工作模式圖.png

上圖描述的是级历,多人協(xié)作開發(fā),代碼通過SVN集中式管理叭披,所有人的代碼都提交到同一個遠程倉庫寥殖。

SVN的集中式工作流.png

上圖描述的是,本地代碼push到遠程倉庫后趋观,遠程倉庫代碼的變化扛禽。

Git結(jié)構(gòu)關(guān)系示意圖.png

Reomte表示服務(wù)器的遠程倉庫,Repository表示本地倉庫皱坛,Workspace是我們的工作區(qū)编曼。

2.2 Centralized Workflow的工作流程

  1. 從遠程倉庫(central repository)克隆工程到本地倉庫(local repository) --- git clone
  2. 在本地倉庫編輯文件和提交更新 --- git add和git commit
  3. fetch遠程倉庫已更新的commit到本地倉庫和rebase到已更新的commit的上面 --- git fetch和git rebase 或 git pull --rebase
  4. push本地主分支(master branch)到遠程倉庫 --- git push

2.3 補充

Git本地倉庫結(jié)構(gòu)示意圖.png

上圖是整個項目只有master分支時,本地倉庫的結(jié)構(gòu)剩辟。

三掐场、Branch Workflow往扔,分支工作流

3.1 Branch Workflow概述

Branch Workflow是本片文章講述的重點,以下是對Branch Workflow的概念的一些非官方的個人講述(如有紕漏請指正)熊户。
Git為我們提供了強大的代碼分支管理功能萍膛,我們可以通過git命令非常快捷方便地創(chuàng)建嚷堡、刪除蝗罗、合并分支。在我們管理分支的過程中需要遵循一定的流程蝌戒,這些流程并不是已開始就定義的好的串塑,而是在不斷工作實踐的過程中得出的寶貴經(jīng)驗。
Branch Workflow的成員如下:

  • Feature Branches
  • Release Branches
  • Maintenance Branches
  • Historical Branches
  • Master Branch
  • Develop Branch

3.2 Master && Develop

Master分支和Develop在git代碼管理中式必不可少的兩個重要分支北苟,其中Master分支是受保護的默認分支桩匪,只有項目的master才能夠進行commit等操作。Develop分支是從Master分支遷出來的第一個分支友鼻,是以后開發(fā)工作中的代碼標(biāo)準(zhǔn)傻昙。其他開發(fā)分支的代碼都要merge到Develop分支進行測試和發(fā)版。是發(fā)開過程中的其他所有分支的父分支彩扔。通常情況下妆档,不允許直接修改Master分支,所有的代碼都必須要通過Develop分支才能合并到Master分支虫碉。

Master&&Develop關(guān)系圖.png


3.3 Feature Branches过吻,功能分支

Feature Branch Workflow的主要思想就是在開發(fā)每個功能時都應(yīng)該創(chuàng)建一個獨立的分支而不只是使用主分支。由于每個分支是獨立且互不影響蔗衡,這就意味著主分支不會包含broken code,對持續(xù)集成環(huán)境是很有幫助的乳绕。

Feature Branch Workflow的流程

  1. 仍然使用遠程倉庫(central repository)和主分支(master branch)仍記錄官方工程的歷史
  2. 開發(fā)者每次開發(fā)新功能時都創(chuàng)建一個新分支 --- git checkout -b
  3. Feature branches應(yīng)該推送到遠程倉庫(central repository) --- git push
  4. 發(fā)送pull request來請求管理員能否合并到主分支(master branch)
  5. 發(fā)布新功能到遠程倉庫(central repository)
Feature Branch示意圖.png

3.4 Maintenance Branches绞惦,維護分支

Maintenance Branches一般用來對產(chǎn)品進行功能微調(diào)和快速修復(fù)bug。它是除了Develop分支之外洋措,唯一可以從master分支直接衍生出來的分支济蝉;一旦完成修復(fù)bug,它應(yīng)該合并回master分支和develop分支菠发;master應(yīng)該被標(biāo)記一個新的版本號王滤。

3.5 Release Branches,發(fā)版分支

  • release分支主要用來清理釋放滓鸠、測試和更新文檔
  • 一旦develop分支獲得足夠的功能來發(fā)布時雁乡,你可以從develop衍生出一個release分支
  • 一旦準(zhǔn)備好上架,release合并到master分支并且標(biāo)記一個版本號
  • 另外糜俗,還需要合并回develop分支

3.6 Historical Branch

用來記錄發(fā)版歷史的分支踱稍,此角色通常由Master分支擔(dān)任曲饱,也可以在每次發(fā)版后切出一個分支保存版本代碼,現(xiàn)在通常使用tag來進行版本記錄珠月。

Git 日志Historical Branch示意圖.png

上圖為Gitflow整體示意圖扩淀,其中HotFix表示Maintenance Branch。

四啤挎、參考文獻

http://www.admin10000.com/document/6377.html

http://www.reibang.com/p/91acec85c3a4

http://blog.csdn.net/dengsilinming/article/details/8000622

http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

http://www.cnblogs.com/muzhifeike/p/5869217.html

五驻谆、Forking Branch說明

Forking Branch在我們?nèi)粘9ぷ髦胁⒉怀S玫剑绻信d趣可以查看github使用說明庆聘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胜臊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子掏觉,更是在濱河造成了極大的恐慌区端,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澳腹,死亡現(xiàn)場離奇詭異织盼,居然都是意外死亡,警方通過查閱死者的電腦和手機酱塔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門沥邻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羊娃,你說我怎么就攤上這事唐全。” “怎么了蕊玷?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長延届。 經(jīng)常有香客問我方庭,道長械念,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任欺殿,我火速辦了婚禮脖苏,結(jié)果婚禮上恃鞋,老公的妹妹穿的比我還像新娘恤浪。我一直安慰自己水由,他們只是感情好砂客,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布渗钉。 她就那樣靜靜地躺著鳄橘,像睡著了一般抵恋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唤锉,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音晒衩,去河邊找鬼。 笑死贝奇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陕习。 我是一名探鬼主播该镣,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼塌忽!你這毒婦竟也來了土居?” 一聲冷哼從身側(cè)響起擦耀,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汽纤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蕴坪,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了明郭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡话侄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盏浇,到底是詐尸還是另有隱情痒蓬,我是刑警寧澤攻晒,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響破喻,放射性物質(zhì)發(fā)生泄漏盟榴。R本人自食惡果不足惜擎场,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迅办。 院中可真熱鬧宅静,春花似錦、人聲如沸站欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矾策。三九已至磷账,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纲酗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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