国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

web 項(xiàng)目如何進(jìn)行 git 多人協(xié)作開(kāi)發(fā)

alaege / 2047人閱讀

摘要:項(xiàng)目如何進(jìn)行多人協(xié)作開(kāi)發(fā)聲明本文不介紹的基本用法,需要讀者對(duì)命令使用有一定的了解現(xiàn)在,大部分項(xiàng)目都是用來(lái)管理代碼的,但當(dāng)項(xiàng)目變大多人協(xié)作時(shí),的使用就變得復(fù)雜了,這時(shí)就需要在使用的流程上來(lái)思考如何更優(yōu)的使用。

web 項(xiàng)目如何進(jìn)行 git 多人協(xié)作開(kāi)發(fā)
聲明:本文不介紹 git 的基本用法,需要讀者對(duì) git、git 命令、git 使用有一定的了解

現(xiàn)在,大部分項(xiàng)目都是用 git 來(lái)管理代碼的,但當(dāng)項(xiàng)目變大、多人協(xié)作時(shí),git 的使用就變得復(fù)雜了,這時(shí)就需要在 git 使用的流程上來(lái)思考如何更優(yōu)的使用 git。

對(duì)于大部分 web 項(xiàng)目而言,并不像軟件、APP 項(xiàng)目一樣有版本的劃分,而是不斷的更新、迭代,這就使得 web 項(xiàng)目的 git 使用要復(fù)雜一些,需要管理好哪些是正在開(kāi)發(fā)的代碼、哪些是提交測(cè)試的代碼、哪些是已經(jīng)上線的代碼、多人共同開(kāi)發(fā)時(shí)如何避免代碼沖突與線上新代碼被舊代碼覆蓋等等。

1. 一個(gè)分支

如果項(xiàng)目比較小,不頻繁更新時(shí),可以只用 master 一個(gè)分支。

使用流程:

提交代碼到本地 master 分支,并推送到遠(yuǎn)程 master 分支

持續(xù)集成構(gòu)建或本地構(gòu)建,然后上傳到服務(wù)器

上傳到服務(wù)器有兩種方式:

持續(xù)集成構(gòu)建,然后同步到服務(wù)器

本地構(gòu)建,然后上傳到服務(wù)器(為了簡(jiǎn)潔清晰,后面的圖例中會(huì)隱藏這種方式)

2. 開(kāi)發(fā)分支與個(gè)人分支

如果項(xiàng)目稍大些,頻繁更新時(shí),就需要另外一個(gè)開(kāi)發(fā)分支:

master:主分支,對(duì)應(yīng)線上代碼

dev:開(kāi)發(fā)分支,對(duì)應(yīng)開(kāi)發(fā)代碼

使用流程:

提交代碼到本地 dev 分支

在需要構(gòu)建項(xiàng)目時(shí) merge 到本地 master 分支,并推送到遠(yuǎn)程 master 分支

持續(xù)集成構(gòu)建,然后同步到服務(wù)器

如果是多人參與的項(xiàng)目,就需要個(gè)人開(kāi)發(fā)分支了:

master:主分支,對(duì)應(yīng)線上代碼

man1:個(gè)人 man1 開(kāi)發(fā)分支

man2:個(gè)人 man2 開(kāi)發(fā)分支

使用流程:

提交代碼到本地 man1 分支(以 man1 個(gè)人為例)

在需要構(gòu)建項(xiàng)目時(shí) merge 到本地 master 分支,并推送到遠(yuǎn)程 master 分支(有可能需要先 pull 遠(yuǎn)程的代碼)

持續(xù)集成構(gòu)建,然后同步到服務(wù)器

在適當(dāng)?shù)臅r(shí)候,每一個(gè)個(gè)人分支(如 man1, man2)都需要 pull 一下 master 分支,以保證自己本地的代碼的版本不會(huì)低于服務(wù)器。

3. 多個(gè)服務(wù)器環(huán)境

如果項(xiàng)目比較大,并且對(duì)應(yīng)多個(gè)服務(wù)器環(huán)境(測(cè)試環(huán)境、產(chǎn)品環(huán)境):

master:主分支

prod:產(chǎn)品分支,對(duì)應(yīng)產(chǎn)品服務(wù)器環(huán)境

test:測(cè)試分支,對(duì)應(yīng)測(cè)試服務(wù)器環(huán)境

dev:開(kāi)發(fā)分支

使用流程:

構(gòu)建測(cè)試環(huán)境:

提交代碼到本地 dev 分支

在需要構(gòu)建項(xiàng)目時(shí) merge 到本地 test 分支,并推送到遠(yuǎn)程 test 分支

持續(xù)集成構(gòu)建,然后同步到測(cè)試服務(wù)器

構(gòu)建產(chǎn)品環(huán)境可以由遠(yuǎn)程的 test 分支 merge 到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建,也可由本地 devtest 分支 merge 到本地 prod 分支,并推送到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建。

如果是多人參與的項(xiàng)目,就需要個(gè)人開(kāi)發(fā)分支了:

master:主分支

prod:產(chǎn)品分支,對(duì)應(yīng)產(chǎn)品服務(wù)器環(huán)境

test:測(cè)試分支,對(duì)應(yīng)測(cè)試服務(wù)器環(huán)境

man1:個(gè)人 man1 開(kāi)發(fā)分支

man2:個(gè)人 man2 開(kāi)發(fā)分支

使用流程:

構(gòu)建測(cè)試環(huán)境:

提交代碼到本地 man1 分支(以 man1 個(gè)人為例)

在需要構(gòu)建項(xiàng)目時(shí) merge 到本地 test 分支,并推送到遠(yuǎn)程 test 分支(有可能需要先 pull 遠(yuǎn)程的代碼)

持續(xù)集成構(gòu)建,然后同步到測(cè)試服務(wù)器

構(gòu)建產(chǎn)品環(huán)境可以由遠(yuǎn)程的 test 分支 merge 到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建,也可由本地 man1test 分支 merge 到本地 prod 分支,并推送到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建。

在適當(dāng)?shù)臅r(shí)候,每一個(gè)個(gè)人分支(如 man1, man2)都需要 pull 一下 prod 分支(如有需要,也可以 pull test 分支),以保證自己本地的代碼的版本不會(huì)低于服務(wù)器。

4. 多個(gè)需求同時(shí)開(kāi)發(fā)

有時(shí)候會(huì)有多個(gè)需求同時(shí)開(kāi)發(fā),并且相互獨(dú)立,為了不影響每個(gè)需求的測(cè)試與上線,需要為每個(gè)需求創(chuàng)建一個(gè)分支。

master:主分支

prod:產(chǎn)品分支,對(duì)應(yīng)產(chǎn)品服務(wù)器環(huán)境

test:測(cè)試分支,對(duì)應(yīng)測(cè)試服務(wù)器環(huán)境

man1:個(gè)人 man1 開(kāi)發(fā)分支

man2:個(gè)人 man2 開(kāi)發(fā)分支

task1:需求 task1 開(kāi)發(fā)分支

task2:需求 task2 開(kāi)發(fā)分支

使用流程:

構(gòu)建測(cè)試環(huán)境與之前的步驟一致,但構(gòu)建產(chǎn)品環(huán)境時(shí),為了保證各個(gè)需求不相互影響,一般由本地直接合并到 prod 分支:

本地 task1 分支 merge 到本地 prod 分支,并推送到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建

每一個(gè)個(gè)人分支(如 man1, man2)都需要 pull 一下 prod 分支,以保證自己本地的代碼的版本不會(huì)低于服務(wù)器

最后刪除 task1 分支

5. 多人協(xié)作開(kāi)發(fā)修改公共文件

因?yàn)椴煌种薷耐粋€(gè)文件而導(dǎo)致的文件沖突是多人協(xié)作開(kāi)發(fā)中比較常見(jiàn)的問(wèn)題之一,避免這種問(wèn)題的思路主要有以下的幾種:

在代碼層面,盡量避免多個(gè)成員都會(huì)改動(dòng)的文件,盡量將代碼分解到每個(gè)人只負(fù)責(zé)自己的那塊代碼,不需要去改別人的代碼

在工程層面,盡量減少公共文件,盡量每個(gè)文件只由一個(gè)人負(fù)責(zé)

在 git 層面,如果有必要,可以多帶帶建一個(gè)分支,用于更新某些公共文件,并及時(shí)的更新到其他分支

6. 其他分支

有一些常用的分支,可能我們會(huì)用到:

bug 分支:用于緊急修復(fù)產(chǎn)品環(huán)境的 bug

7. 根據(jù)情況調(diào)整、簡(jiǎn)化流程

上面的圖例只有測(cè)試服務(wù)器和產(chǎn)品服務(wù)器,更多服務(wù)器類(lèi)型的工作流程是類(lèi)似的;圖例也只有 man1man2 兩個(gè)個(gè)人分支,更多個(gè)人分支的工作流程也是類(lèi)似的。

上面的圖例主要用于以下特點(diǎn)的項(xiàng)目(需要把整個(gè)項(xiàng)目打包成一個(gè)整體):

單頁(yè)面 web 前端應(yīng)用,整個(gè)項(xiàng)目只有一個(gè) html 文件,頁(yè)面之間的切換由本地路由控制,每次更新到服務(wù)器都需要打包所有頁(yè)面

Java、Go 等后端應(yīng)用,每次都需要打包成一個(gè)整體,可能是一個(gè)文件,或者一批文件(不打包成一個(gè)整體的方式除外,比如分散 java class 文件)

使用持續(xù)集成構(gòu)建的方式更新代碼到服務(wù)器

這樣做主要是為了避免一些問(wèn)題:

線上新代碼被舊代碼覆蓋:多人同時(shí)開(kāi)發(fā)項(xiàng)目,都需要更新到測(cè)試機(jī),如果不是統(tǒng)一 pushtest 分支做持續(xù)集成構(gòu)建,很難保證線上新代碼不會(huì)被舊代碼覆蓋

未測(cè)試的代碼被更新到產(chǎn)品環(huán)境:這個(gè)問(wèn)題也需要注意,因?yàn)檫@個(gè)問(wèn)題并不能從流程上完全杜絕,需要各位在開(kāi)發(fā)中留意

對(duì)于像下面這種特點(diǎn)的項(xiàng)目,可以根據(jù)情況調(diào)整、簡(jiǎn)化流程:

多頁(yè)面 web 前端應(yīng)用,把某一個(gè)頁(yè)面更新到服務(wù)器并不影響其他頁(yè)面

NodeJs、PHP、Python 等后端應(yīng)用,只上傳自己更新的文件,而不影響服務(wù)器上其他文件(把所有代碼打包成一個(gè)整體的方式除外)

使用本地構(gòu)建的方式更新代碼到服務(wù)器

比如:

master:主分支

man1:個(gè)人 man1 開(kāi)發(fā)分支

man2:個(gè)人 man2 開(kāi)發(fā)分支

task1:需求 task1 開(kāi)發(fā)分支

task2:需求 task2 開(kāi)發(fā)分支

使用流程:

如果多個(gè)需求沒(méi)有沖突,可以同時(shí)在 man1 個(gè)人分支上開(kāi)發(fā),并根據(jù)需要上傳到不同的服務(wù)器。

如果多個(gè)需求有沖突,可以每個(gè)需求都新建一個(gè)分支,如上圖所示:

提交代碼到本地 task1 分支(以 task1 個(gè)人為例)

根據(jù)需要上傳到不同的服務(wù)器

如果代碼通過(guò)產(chǎn)品環(huán)境后,更新到每個(gè)個(gè)人分支,并刪除 task1 分支

這樣子,就簡(jiǎn)單很多了。

后續(xù)

更多博客,查看 https://github.com/senntyou/blogs

作者:深予之 (@senntyou)

版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73280.html

相關(guān)文章

  • web 項(xiàng)目如何進(jìn)行 git 多人協(xié)作開(kāi)發(fā)

    摘要:項(xiàng)目如何進(jìn)行多人協(xié)作開(kāi)發(fā)聲明本文不介紹的基本用法,需要讀者對(duì)命令使用有一定的了解現(xiàn)在,大部分項(xiàng)目都是用來(lái)管理代碼的,但當(dāng)項(xiàng)目變大多人協(xié)作時(shí),的使用就變得復(fù)雜了,這時(shí)就需要在使用的流程上來(lái)思考如何更優(yōu)的使用。 web 項(xiàng)目如何進(jìn)行 git 多人協(xié)作開(kāi)發(fā) 聲明:本文不介紹 git 的基本用法,需要讀者對(duì) git、git 命令、git 使用有一定的了解 現(xiàn)在,大部分項(xiàng)目都是用 git 來(lái)管理...

    lushan 評(píng)論0 收藏0
  • web 項(xiàng)目如何進(jìn)行 git 多人協(xié)作開(kāi)發(fā)

    摘要:項(xiàng)目如何進(jìn)行多人協(xié)作開(kāi)發(fā)聲明本文不介紹的基本用法,需要讀者對(duì)命令使用有一定的了解現(xiàn)在,大部分項(xiàng)目都是用來(lái)管理代碼的,但當(dāng)項(xiàng)目變大多人協(xié)作時(shí),的使用就變得復(fù)雜了,這時(shí)就需要在使用的流程上來(lái)思考如何更優(yōu)的使用。 web 項(xiàng)目如何進(jìn)行 git 多人協(xié)作開(kāi)發(fā) 聲明:本文不介紹 git 的基本用法,需要讀者對(duì) git、git 命令、git 使用有一定的了解 現(xiàn)在,大部分項(xiàng)目都是用 git 來(lái)管理...

    Ocean 評(píng)論0 收藏0
  • 精讀《Monorepo 的優(yōu)勢(shì)》

    摘要:引言本周精讀的文章是。精讀總的來(lái)說(shuō),雖然拆分子倉(cāng)庫(kù)拆分子包是進(jìn)行項(xiàng)目隔離的天然方案,但當(dāng)倉(cāng)庫(kù)內(nèi)容出現(xiàn)關(guān)聯(lián)時(shí),沒(méi)有任何一種調(diào)試方式比源碼放在一起更高效。前端精讀幫你篩選靠譜的內(nèi)容。 1. 引言 本周精讀的文章是 The many Benefits of Using a Monorepo。 現(xiàn)在介紹 Monorepo 的文章很多,可以分為如下幾類(lèi):直接介紹 Lerna API 的;介紹如何...

    xcc3641 評(píng)論0 收藏0
  • git 詳解及實(shí)用指南之三(分支管理)

    摘要:詳解及實(shí)用指南之一本地操作詳解及實(shí)用指南之二遠(yuǎn)程操作創(chuàng)建與合并分支利用分支就可以實(shí)現(xiàn)多人開(kāi)發(fā)的偉大模式,從而提高生產(chǎn)效率。分支默認(rèn)情況下,是一條線,利用指向最新的提交,再用批向就能確定當(dāng)前分支以及當(dāng)前分支的提交點(diǎn)。 1. git 詳解及實(shí)用指南之一 (本地操作) 2. git 詳解及實(shí)用指南之二 (遠(yuǎn)程操作) 1.創(chuàng)建與合并分支 利用分支就可以實(shí)現(xiàn)多人開(kāi)發(fā)的偉大模式,從而提高生產(chǎn)效率。...

    cgspine 評(píng)論0 收藏0
  • git 詳解及實(shí)用指南之三(分支管理)

    摘要:詳解及實(shí)用指南之一本地操作詳解及實(shí)用指南之二遠(yuǎn)程操作創(chuàng)建與合并分支利用分支就可以實(shí)現(xiàn)多人開(kāi)發(fā)的偉大模式,從而提高生產(chǎn)效率。分支默認(rèn)情況下,是一條線,利用指向最新的提交,再用批向就能確定當(dāng)前分支以及當(dāng)前分支的提交點(diǎn)。 1. git 詳解及實(shí)用指南之一 (本地操作) 2. git 詳解及實(shí)用指南之二 (遠(yuǎn)程操作) 1.創(chuàng)建與合并分支 利用分支就可以實(shí)現(xiàn)多人開(kāi)發(fā)的偉大模式,從而提高生產(chǎn)效率。...

    darryrzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<