Git分支模型和開發(fā)規(guī)范

1.分支管理

1.1 總覽

image

從上圖可以看到主要包含下面幾個(gè)分支:

  • master: 主分支氧敢,主要用來版本發(fā)布植康。
  • develop:日常開發(fā)分支效扫,該分支正常保存了開發(fā)的最新代碼。
  • feature:從develop分支fork席覆,合并回develop刹孔。具體的功能開發(fā)分支。
  • release:從develop分支fork娜睛,合并回develop和master。一般用于發(fā)布正式版本之前(即合并到 master 分支之前)卦睹,需要有的預(yù)發(fā)布的版本進(jìn)行測(cè)試畦戒。
  • hotfix:從master分支fork,合并回develop和master结序。線上 bug 修復(fù)分支障斋。

1.2 主分支(master, develop)

主分支包括 master 分支和 develop 分支。master 分支用來發(fā)布,HEAD 就是當(dāng)前線上的運(yùn)行代碼垃环。develop 分支就是我們的日常開發(fā)邀层。使用這兩個(gè)分支就具有了最簡(jiǎn)單的開發(fā)模式:develop 分支用來開發(fā)功能,開發(fā)完成并且測(cè)試沒有問題則將 develop 分支的代碼合并到 master 分支并發(fā)布遂庄。

1.3 輔助分支(feature , release, hotfix)

??? feature 分支用來開發(fā)具體的功能寥院,一般 fork 自 develop 分支,最終可能會(huì)合并到 develop 分支涛目。一般feature分支都存在于開發(fā)者本地秸谢,開發(fā)期間使用git rebase來保證和develop分支的代碼同步并解決沖突。功能開發(fā)完畢后push到遠(yuǎn)程倉庫霹肝,然后提交pull request估蹄,合并到develop分支。

??? release 分支在我看來是 pre-master沫换。release 分支從 develop 分支 fork 出來臭蚁,最終會(huì)合并到 develop 分支和 master 分支。合并到 master 分支上就是可以發(fā)布的代碼了讯赏。有人可能會(huì)問那為什么合并回 develop 分支呢垮兑?很簡(jiǎn)單,有了 release 分支待逞,那么相關(guān)的代碼修復(fù)就只會(huì)在 release 分支上改動(dòng)了甥角,最后必然要合并到 develop 分支。比如识樱,當(dāng)開發(fā)一個(gè)較長(zhǎng)期的feature不著急上線但又需要部署測(cè)試時(shí)嗤无,可以從develop分出一個(gè)release分支,feature提交pull request到這個(gè)release分支怜庸,然后部署這個(gè)release分支到測(cè)試服当犯。

??? hotfix 分支用來修復(fù)線上 bug。當(dāng)線上代碼出現(xiàn) bug 時(shí)割疾,我們基于 master 分支開一個(gè) hotfix 分支嚎卫,修復(fù) bug 之后再將 hotfix 分支合并到 master 分支并進(jìn)行發(fā)布,同時(shí) develop 分支作為最新最全的代碼分支宏榕,hotfix 分支也需要合并到 develop 分支上去拓诸。

1.4 分支命名

除了主要分支的名字是固定的之外,派生分支是需要自己命名的麻昼,這里就要有個(gè)命名規(guī)范了奠支。強(qiáng)烈推薦用如下形式:

  • master 主分支,發(fā)布分支
  • dev 主分支抚芦,開發(fā)分支
  • feat_xxx——按照功能點(diǎn)(而不是需求)命名倍谜;
  • release_xxx——用發(fā)布時(shí)間命名迈螟,可以加上適當(dāng)?shù)那熬Y;
  • hotfix_xxx——GitLab 的 issue 編號(hào)或 bug 性質(zhì)等尔崔。

小寫字母下劃線形式

1.5 版本號(hào)命名

格式為:x.y.z答毫,其中,x 用于有重大重構(gòu)時(shí)才會(huì)升級(jí)季春,y 用于有新的特性發(fā)布時(shí)才會(huì)升級(jí)洗搂,z 用于修改了某個(gè) bug 后才會(huì)升級(jí)。

v1.1.1:第一位大版本號(hào)鹤盒,大功能發(fā)布時(shí)增加蚕脏,技術(shù)負(fù)責(zé)人審核;第二位小版本號(hào)侦锯,增加小特性時(shí)增加驼鞭,主開發(fā)審核;第三位BUG修復(fù)號(hào)尺碰,修復(fù)BUG用挣棕,修復(fù)人員負(fù)責(zé)。

  • 每次發(fā)布生產(chǎn)(master)亲桥,需要為master打一個(gè)tag洛心,方便線上回滾
  • 提交時(shí)的粒度是一個(gè)小功能點(diǎn)或者一個(gè) bug fix,這樣進(jìn)行恢復(fù)等的操作時(shí)能夠?qū)ⅰ刚`傷」減到最低题篷;
  • 用一句簡(jiǎn)練的話寫在第一行词身,然后空一行稍微詳細(xì)闡述該提交所增加或修改的地方;
  • 不要每提交一次就推送一次番枚,多積攢幾個(gè)提交后一次性推送法严,這樣可以避免在進(jìn)行一次提交后發(fā)現(xiàn)代碼中還有小錯(cuò)誤。

1.6 Commit Message 格式

<type>(<scope>): <subject> (不超過50個(gè)字)

<空行>

<body> (每行不超過72個(gè)字)

<空行>

<footer>
  • type
    feat:新功能(feature)
    fix:修補(bǔ)bug
    mod:修改(即不是新增功能葫笼,也不是修改bug的代碼變動(dòng))
    refactor:重構(gòu)
    docs:文檔(documentation)
    style: 格式(不影響代碼運(yùn)行的變動(dòng))
    test:增加測(cè)試
    chore:構(gòu)建過程或輔助工具的變動(dòng)

  • Scope
    用來說明本次Commit影響的范圍深啤,即簡(jiǎn)要說明修改會(huì)涉及的部分。這個(gè)本來是選填項(xiàng)路星,但從AngularJS實(shí)際項(xiàng)目中可以看出基本上也成了必填項(xiàng)了溯街。

  • Subject
    用來簡(jiǎn)要描述本次改動(dòng),概述就好了洋丐,因?yàn)楹竺孢€會(huì)在Body里給出具體信息呈昔。并且最好遵循下面三條:
    1、 以動(dòng)詞開頭友绝,使用第一人稱現(xiàn)在時(shí)堤尾,比如change,而不是changed或changes
    2九榔、首字母不要大寫
    2、結(jié)尾不用句號(hào)(.)

  • Body
    里的內(nèi)容是對(duì)上面subject里內(nèi)容的展開,在此做更加詳盡的描述哲泊,內(nèi)容里應(yīng)該包含修改動(dòng)機(jī)和修改前后的對(duì)比剩蟀。

  • Footer
    footer里的主要放置不兼容變更和Issue關(guān)閉的信息

  • Revert
    此外如果需要撤銷之前的Commit,那么本次Commit Message中必須以revert:開頭切威,后面緊跟前面描述的Header部分育特,格式不變。并且先朦,Body部分的格式也是固定的缰冤,必須要記錄撤銷前Commit的SHA值。

示例

feat: 增加港股經(jīng)紀(jì)商隊(duì)列

增加港股經(jīng)紀(jì)商隊(duì)列接口和后臺(tái)名稱編輯接口
增加同時(shí)獲取買賣盤和經(jīng)紀(jì)商的接口

BREAKING CHANGE: 刪除了舊版十檔買賣盤接口

原文地址>>>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喳魏,一起剝皮案震驚了整個(gè)濱河市棉浸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刺彩,老刑警劉巖迷郑,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異创倔,居然都是意外死亡嗡害,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門畦攘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霸妹,“玉大人,你說我怎么就攤上這事知押√久” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵朗徊,是天一觀的道長(zhǎng)首妖。 經(jīng)常有香客問我,道長(zhǎng)爷恳,這世上最難降的妖魔是什么有缆? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮温亲,結(jié)果婚禮上棚壁,老公的妹妹穿的比我還像新娘。我一直安慰自己栈虚,他們只是感情好袖外,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著魂务,像睡著了一般曼验。 火紅的嫁衣襯著肌膚如雪泌射。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天鬓照,我揣著相機(jī)與錄音熔酷,去河邊找鬼。 笑死豺裆,一個(gè)胖子當(dāng)著我的面吹牛拒秘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播臭猜,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躺酒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蔑歌?” 一聲冷哼從身側(cè)響起羹应,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丐膝,沒想到半個(gè)月后量愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帅矗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年偎肃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑此。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡累颂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凛俱,到底是詐尸還是另有隱情紊馏,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布蒲犬,位于F島的核電站朱监,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏原叮。R本人自食惡果不足惜赫编,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奋隶。 院中可真熱鬧擂送,春花似錦、人聲如沸唯欣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽境氢。三九已至蟀拷,卻和暖如春碰纬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背问芬。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工嘀趟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愈诚。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像牛隅,于是被迫代替她去往敵國和親炕柔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355