Git分支管理規(guī)范構(gòu)思

最近對于公司項(xiàng)目源碼分支管理有一些規(guī)范構(gòu)思京办,對于同一個項(xiàng)目而言掀序,不同環(huán)境的源碼管理、自動化部署方式惭婿、以及接口數(shù)據(jù)隔離等我們是否可以滿足現(xiàn)狀不恭?

對于基礎(chǔ)項(xiàng)目源碼分支而言,一般有develop财饥、master兩個换吧,develop來研發(fā)功能并測試沒有問題后合并到master再發(fā)布到生產(chǎn)環(huán)境。

分支示意圖

特性分支(feature)

如果項(xiàng)目比較大钥星,協(xié)同人員比較多沾瓦,每個研發(fā)人員的分工比較明確,針對這種情況我們?nèi)绻€是簡單的使用develop/master兩個分支就不太能滿足需求了谦炒,針對這個情況我們?nèi)绾稳ヒ?guī)范化管理呢贯莺?

特性分支一般是基于develop開發(fā)分支衍生創(chuàng)建的,而且是本地分支(Local Branches)宁改,不太建議一個特性任務(wù)多個人同時使用缕探,如果必須是多人協(xié)同的任務(wù),那么該特性分支則會變成遠(yuǎn)程分支(Remote Branches)透且,特性分支的任務(wù)完成后需要合并到develop分支并后續(xù)提交給測試人員進(jìn)行測試撕蔼。

任務(wù)分配到具體研發(fā)人員后,研發(fā)人員可以在本地創(chuàng)建特性分支秽誊,如果分支較多為了區(qū)分方便鲸沮,我們可以定義一個分支名稱的前綴,如:feature-锅论,如果給我分配了用戶管理的任務(wù)讼溺,那么我就可以在本地創(chuàng)建feature-user特性分支來研發(fā)。

緊急缺陷修復(fù)分支(bugfix)

如果代碼已經(jīng)發(fā)布最易,在運(yùn)行過程中遇到了一個緊急的缺陷怒坯,針對這個缺陷我們需要怎么去修復(fù)呢炫狱?

首先我們需要基于master分支來衍生創(chuàng)建缺陷修復(fù)分支,該分支也應(yīng)該是本地分支(Local Branches)不應(yīng)該被推送到遠(yuǎn)程目標(biāo)倉庫剔猿,我們可以以bugfix-作為缺陷修復(fù)分支的前綴视译,如:bugfix-register-error

缺陷一旦修復(fù)完成后需要將bugfix-xxx分支的代碼變動合并到master以及develop

  • 為什么合并到develop归敬?

    遇到的缺陷不僅是master分支存在酷含,因?yàn)?code>master分支的代碼是從develop合并而來的,所以我們需要同步合并到develop防止后續(xù)發(fā)版再次出現(xiàn)相同的問題汪茧。

  • 為什么合并到master椅亚?

    因?yàn)樵撊毕菔巧a(chǎn)環(huán)境發(fā)現(xiàn)的,雖然我們合并到了develop分支舱污,但是不保證距下次發(fā)版生產(chǎn)環(huán)境不再出現(xiàn)緊急的缺陷所以我們需要將代碼合并到master呀舔。

下一個版本分支(next-version)

如果項(xiàng)目是有規(guī)劃根據(jù)迭代版本循序漸進(jìn)的,那么建議使用next-version分支扩灯,那么為什么這么做呢媚赖?

顧名思義,next-version下一個版本珠插,當(dāng)前版本源碼一般存放于develop分支省古,而且當(dāng)前版本是跟任務(wù)規(guī)劃來的,不會涉及next-version分支的源碼丧失,這樣就做到了版本之間的源碼隔離,當(dāng)前版本準(zhǔn)備發(fā)布時防止發(fā)布下個版本未完成的功能惜互。

next-version是基于develop分支衍生創(chuàng)建的布讹,develop是當(dāng)前版本,那么next-version就是下一個當(dāng)前版本训堆,develop一旦合并到master發(fā)布后就需要將next-version的代碼合并到develop作為當(dāng)前版本繼續(xù)做后續(xù)研發(fā)描验。

支持自動化部署的分支

自動化部署可以極大的提高CI/CD效率,研發(fā)人員只需要關(guān)心業(yè)務(wù)功能怎么去實(shí)現(xiàn)坑鱼,無需考慮代碼怎么去部署膘流,代碼一旦被提交就可以觸發(fā)自動化部署的程序,實(shí)現(xiàn)流水線的自動化部署業(yè)務(wù)鲁沥。

開發(fā)環(huán)境自動化部署可以考慮使用Drone來配置呼股,它很輕量級,在根目錄下創(chuàng)建一個名為.drone.yml的文件即可搞定配置流程画恰,它還可以結(jié)合支持私有部署的Git源碼倉庫:Gitea 實(shí)現(xiàn)鉤子回調(diào)彭谁,部署也很簡單使用docker部署一個管理端、一個運(yùn)行節(jié)點(diǎn)即可允扇。

參與自動化部署的分支一般為:develop缠局、next-version则奥。

master分支則是建議手動觸發(fā)的方式來部署,可以使用Jenkins狭园。

常見問題

  • 功能還未研發(fā)完成读处,臨時接到緊急任務(wù),我怎么把未完成的工作保存并切換分支唱矛?

    可以使用git stash暫存工作空間的文件變動罚舱,暫存后就可以切換到其他分支做相關(guān)工作了,處理完成后返回未完成的分支執(zhí)行git stash pop恢復(fù)暫存即可揖赴,git stash還有很多用法馆匿,可以參考官網(wǎng)文檔:git-stash

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市燥滑,隨后出現(xiàn)的幾起案子渐北,更是在濱河造成了極大的恐慌,老刑警劉巖铭拧,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃蛛,死亡現(xiàn)場離奇詭異,居然都是意外死亡搀菩,警方通過查閱死者的電腦和手機(jī)呕臂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肪跋,“玉大人歧蒋,你說我怎么就攤上這事≈菁龋” “怎么了谜洽?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吴叶。 經(jīng)常有香客問我阐虚,道長,這世上最難降的妖魔是什么蚌卤? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮咸灿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己谷异,他們只是感情好分尸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布歹嘹。 她就那樣靜靜地躺著箩绍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尺上。 梳的紋絲不亂的頭發(fā)上卑吭,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天富稻,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛元暴,可吹牛的內(nèi)容都是我干的茉盏。 我是一名探鬼主播讶迁,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罚斗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了距淫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎换棚,沒想到半個月后娘汞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旷偿,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萍程,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年衍锚,在試婚紗的時候發(fā)現(xiàn)自己被綠了告匠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片输莺。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡戚哎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嫂用,到底是詐尸還是另有隱情型凳,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布嘱函,位于F島的核電站甘畅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏往弓。R本人自食惡果不足惜橄浓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亮航。 院中可真熱鬧,春花似錦匀们、人聲如沸缴淋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽重抖。三九已至露氮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钟沛,已是汗流浹背畔规。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恨统,地道東北人叁扫。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像畜埋,于是被迫代替她去往敵國和親莫绣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

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

  • 所有使用了本規(guī)范的項(xiàng)目悠鞍,必須嚴(yán)格規(guī)范操作对室,否則不予以合并代碼、提測咖祭、打包上線等后續(xù)操作掩宜。 branch使用規(guī)范 分...
    一瓶多先生閱讀 831評論 0 1
  • 轉(zhuǎn)載 GIT工作流簡介 功能驅(qū)動開發(fā) "功能驅(qū)動式開發(fā)"(Feature-driven development,簡...
    張志_koen_zhang閱讀 14,475評論 1 6
  • 良好的分支管理有利于整個項(xiàng)目的穩(wěn)步迭代與團(tuán)隊(duì)成員間的密切合作么翰,故而本文將介紹一個成熟的git分支管理模型牺汤,用作實(shí)踐...
    Xzzzl閱讀 721評論 0 0
  • 1 GIT,在技術(shù)層面上硬鞍,絕對是一個無中心的分布式版本控制系統(tǒng)慧瘤,但在管理層面上,我建議你保持一個中心版本庫固该。 2 ...
    聶順閱讀 783評論 0 1
  • 常設(shè)分支 master 分支 -- master 為主分支锅减,也是用于部署生產(chǎn)環(huán)境的分支,確保master分支穩(wěn)定性...
    Kuco_Shen閱讀 1,523評論 0 2