欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          分享一個(gè)git工作流優(yōu)雅的玩法

          在開(kāi)發(fā)中,不論是一個(gè)團(tuán)隊(duì)一起開(kāi)發(fā)一個(gè)項(xiàng)目,還是自己獨(dú)立開(kāi)發(fā)一個(gè)項(xiàng)目。都少不了要和git打交道。面對(duì)不同的開(kāi)發(fā)場(chǎng)景,或許每個(gè)團(tuán)隊(duì)都有自己的git工作流。這里,我想分享一下我的團(tuán)隊(duì)目前正在使用的基于gitlabgit工作流。一起交流一下。

          規(guī)范化的git流程能降低我們的出錯(cuò)概率,也不會(huì)經(jīng)常遇到git問(wèn)題,然后去搜一堆git高階用法。我們的這套git玩法兒,其實(shí)只要會(huì)基本的git操作就行了,然后規(guī)范化操作,基本不會(huì)遇到git問(wèn)題,這樣大家就可以將時(shí)間用于業(yè)務(wù)上。最終,希望大家研究git的時(shí)候是在感興趣的時(shí)候,而不是遇到問(wèn)題,緊急去尋找答案的時(shí)候

          我們的這種git工作流玩兒法呢,主要是分為下面幾個(gè)分支:

          • master分支 最新的穩(wěn)定代碼
          • vx.x.x分支 版本分支,x.x.x是此次開(kāi)發(fā)的版本號(hào)。
          • feat-xxx分支 特性(新的功能)分支
          • fix-xxx分支 修復(fù)分支

          上面的這些分支呢,就是我們?cè)陂_(kāi)發(fā)中需要經(jīng)常去創(chuàng)建并使用的分支。下面詳細(xì)說(shuō)說(shuō)每個(gè)分支代表的意思。

          master分支代表的是最新的穩(wěn)定版本的代碼,一般是版本分支或者修復(fù)分支的代碼上線(xiàn)后合并過(guò)來(lái)的。

          feat-xxx分支表示的是為開(kāi)發(fā)某個(gè)版本的某個(gè)新功能而創(chuàng)建的分支。

          vx.x.x代表的是版本分支,這個(gè)是我們?cè)诿總€(gè)版本開(kāi)始前,以此次版本號(hào)為名從master創(chuàng)建的分支,比如版本號(hào)是 2.0.1,那么版本分支則為 v2.0.1。然后等到該版本的各個(gè)新功能在feat-xxx開(kāi)發(fā)完成并冒煙測(cè)試通過(guò)后,就到gitlab上提一個(gè)mr合并到該版本分支上。等到各個(gè)環(huán)境測(cè)試通過(guò)后,就將版本分支的代碼合并到master上,然后就可以刪除本次的版本分支了。

          fix-xxx表示的是修復(fù)分支,通常在處理線(xiàn)上問(wèn)題時(shí),創(chuàng)建一個(gè)以缺陷名稱(chēng)命名的分支,在缺陷測(cè)試通過(guò)后,通過(guò)mr合并到master分支去

          注意:這里有個(gè)細(xì)節(jié)是,在特性分支上開(kāi)發(fā)提交的commit信息,一般認(rèn)為是無(wú)用信息,會(huì)在合并給版本分支的時(shí)候給合并到一個(gè)commit(由于我們是使用gitlab來(lái)合并,所以在發(fā)起mr請(qǐng)求時(shí)勾選squash選項(xiàng)就好了),而在提測(cè)后不論是修復(fù)測(cè)試過(guò)程中bug,或者是優(yōu)化功能的commit則會(huì)全部保留,這個(gè)目的是一個(gè)警示,因?yàn)槲蚁M詈玫那闆r是提測(cè)即上線(xiàn),雖然達(dá)到這個(gè)目標(biāo)有難度,但是這些留下的commit信息可以幫助我們復(fù)盤(pán)

          各個(gè)分支的作用如上面所描述的那樣,接著聊聊我們開(kāi)發(fā)的一些經(jīng)典場(chǎng)景該怎么做:

          第一個(gè)場(chǎng)景:正常開(kāi)發(fā)迭代

          我們以本次需要開(kāi)發(fā)一個(gè) 1.0.0版本為例,這個(gè)其中有兩個(gè)功能模塊,一個(gè)是需要添加一個(gè)按鈕,一個(gè)是需要添加一個(gè)表格

          sequenceDiagram master->>v1.0.0: 從master切出 v1.0.0 master->>feat-add-button: 從master切出 feat-add-button master->>feat-add-form: 從master切出 feat-add-button feat-add-form->>feat-add-form: 開(kāi)發(fā)完成 feat-add-button->>feat-add-button: 開(kāi)發(fā)完成 feat-add-button->>v1.0.0: 在gitlab發(fā)起mr到v1.0.0,并合并所有commit feat-add-form->>v1.0.0: 在gitlab發(fā)起mr到v1.0.0,并合并所有commit v1.0.0->>v1.0.0: 提測(cè) feat-add-button->>feat-add-button: 修復(fù)測(cè)試bug feat-add-button->>v1.0.0: 將修復(fù)的 commit cherry pick到 v1.0.0 v1.0.0->>master: 在gitlab上mr到master,并將合并信息改成 v1.0.0
          登錄后復(fù)制

          分享一個(gè)git工作流優(yōu)雅的玩法

          通過(guò)上面的時(shí)序圖,可以看到,我們以我們即將開(kāi)始的版本命名了一個(gè)版本分支 v1.0.0,并且也根據(jù)這個(gè)版本下面的兩個(gè)功能創(chuàng)建了兩個(gè)特性分支 feat-add-buttonfeat-add-form,然后等功能開(kāi)發(fā)完成后再通過(guò)gitlab發(fā)起mr(注意,這里要把合并commit選項(xiàng)勾選上)合并到 v1.0.0,那么 v1.0.0分支的代碼就會(huì)從dev環(huán)境開(kāi)始流轉(zhuǎn),直到生產(chǎn)環(huán)境。這其中,如果有需要修復(fù)或者優(yōu)化的地方,也是先修改特性分支,然后再cherry pick到版本分支上面。上線(xiàn)以后刪除版本分支以及下面的特性分支。

          通過(guò)這個(gè)流程管理的代碼版本非常清晰,這是截取的master的一部分片段

          分享一個(gè)git工作流優(yōu)雅的玩法

          在正常迭代流程還有個(gè)場(chǎng)景。那就是在開(kāi)發(fā)過(guò)程中,pm突然過(guò)來(lái)說(shuō),因?yàn)槟撤N不可抗力,有一個(gè)功能需要砍掉。這個(gè)時(shí)候,如果是代碼還沒(méi)提測(cè),亦或者是功能比較簡(jiǎn)單,處理起來(lái)還不算麻煩。但如果是,你的功能和其他同事的代碼已經(jīng)在測(cè)試了,并且也已經(jīng)修復(fù)了一些bug,commit都交叉在一起,特別是那種涉及修改文件還多的需求,這個(gè)時(shí)候處理起來(lái)就很麻煩,不僅要看著別人的代碼,還得警惕自己的代碼別弄錯(cuò)了。那這個(gè)時(shí)候,在我們流程里就很簡(jiǎn)單,直接刪除現(xiàn)有的版本分支就好了,再重新將需要上線(xiàn)的特性分支組合在一起就可以了??梢钥吹?,版本分支是由特性分支組合起來(lái)的,也就是說(shuō),版本分支可以由不同的特性分支隨意組合。這樣處理起來(lái)就比較方便

          第二個(gè)場(chǎng)景 線(xiàn)上bug修復(fù)

          我們以線(xiàn)上需要修復(fù)一個(gè)按鈕的點(diǎn)擊事件為例

          sequenceDiagram master->>fix-button-click: 從master切出 fix-button-click fix-button-click->>fix-button-click: 修復(fù)問(wèn)題并測(cè)試 fix-button-click->>master: 從gitlab發(fā)起mr合并到master
          登錄后復(fù)制

          其實(shí)這里的流程跟上面沒(méi)多大的區(qū)別,但是這里需要注意的是,線(xiàn)上問(wèn)題修復(fù),一個(gè)bug一個(gè)commit,合并到master的時(shí)候不合并commit。而且需要將合并信息修改為本次的版本號(hào)。比如本次則為 v1.0.1

          第三個(gè)場(chǎng)景 多版本并行開(kāi)發(fā)

          這個(gè)場(chǎng)景跟正常迭代場(chǎng)景并沒(méi)啥區(qū)別,只是取決于你有多個(gè)版本,就創(chuàng)建對(duì)應(yīng)的版本分支就可以了。每個(gè)版本分支按照正常迭代流程就可以了。

          Q&A

          Q:為什么沒(méi)有使用dev、test等對(duì)應(yīng)環(huán)境的分支,這樣也好實(shí)現(xiàn)push既部署

          A:我們這個(gè)流程是放棄了使用這些固定的分支的。有幾個(gè)原因,

          • 代碼提測(cè)后從dev到test,甚至再到uat(預(yù)發(fā)布)環(huán)境,如果在不同的環(huán)境都有代碼的變動(dòng),那么為了保持這些分支代碼一致的話(huà),就需要將代碼同步到各個(gè)環(huán)境分支,這點(diǎn)兒有些費(fèi)事兒。而版本分支不存在這個(gè)問(wèn)題,版本分支只有一個(gè),可以對(duì)應(yīng)到各個(gè)環(huán)境。

          • 方便多版本并行開(kāi)發(fā)。版本分支可以創(chuàng)建多個(gè),并行開(kāi)發(fā)的時(shí)候比較方便部署到不同的測(cè)試環(huán)境。如果版本之間的模塊關(guān)聯(lián)性不大,還可以并行測(cè)試。

          • 語(yǔ)義化。版本分支可以通過(guò)分支名稱(chēng)就知道目前有哪些分支正在開(kāi)發(fā)中。

          Q: master分支有變動(dòng)怎么處理

          A: master分支有變動(dòng)的話(huà),及時(shí)的合并到自己的功能分支上,以防和其他成員代碼有沖突

          推薦學(xué)習(xí):《Git視頻教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)