摘要:項目如何進(jìn)行多人協(xié)作開發(fā)聲明本文不介紹的基本用法,需要讀者對命令使用有一定的了解現(xiàn)在,大部分項目都是用來管理代碼的,但當(dāng)項目變大多人協(xié)作時,的使用就變得復(fù)雜了,這時就需要在使用的流程上來思考如何更優(yōu)的使用。
web 項目如何進(jìn)行 git 多人協(xié)作開發(fā)
聲明:本文不介紹 git 的基本用法,需要讀者對 git、git 命令、git 使用有一定的了解
現(xiàn)在,大部分項目都是用 git 來管理代碼的,但當(dāng)項目變大、多人協(xié)作時,git 的使用就變得復(fù)雜了,這時就需要在 git 使用的流程上來思考如何更優(yōu)的使用 git。
對于大部分 web 項目而言,并不像軟件、APP 項目一樣有版本的劃分,而是不斷的更新、迭代,這就使得 web 項目的 git 使用要復(fù)雜一些,需要管理好哪些是正在開發(fā)的代碼、哪些是提交測試的代碼、哪些是已經(jīng)上線的代碼、多人共同開發(fā)時如何避免代碼沖突與線上新代碼被舊代碼覆蓋等等。
1. 一個分支如果項目比較小,不頻繁更新時,可以只用 master 一個分支。
使用流程:
提交代碼到本地 master 分支,并推送到遠(yuǎn)程 master 分支
持續(xù)集成構(gòu)建或本地構(gòu)建,然后上傳到服務(wù)器
上傳到服務(wù)器有兩種方式:
持續(xù)集成構(gòu)建,然后同步到服務(wù)器
本地構(gòu)建,然后上傳到服務(wù)器(為了簡潔清晰,后面的圖例中會隱藏這種方式)
2. 開發(fā)分支與個人分支如果項目稍大些,頻繁更新時,就需要另外一個開發(fā)分支:
master:主分支,對應(yīng)線上代碼
dev:開發(fā)分支,對應(yīng)開發(fā)代碼
使用流程:
提交代碼到本地 dev 分支
在需要構(gòu)建項目時 merge 到本地 master 分支,并推送到遠(yuǎn)程 master 分支
持續(xù)集成構(gòu)建,然后同步到服務(wù)器
如果是多人參與的項目,就需要個人開發(fā)分支了:
master:主分支,對應(yīng)線上代碼
man1:個人 man1 開發(fā)分支
man2:個人 man2 開發(fā)分支
使用流程:
提交代碼到本地 man1 分支(以 man1 個人為例)
在需要構(gòu)建項目時 merge 到本地 master 分支,并推送到遠(yuǎn)程 master 分支(有可能需要先 pull 遠(yuǎn)程的代碼)
持續(xù)集成構(gòu)建,然后同步到服務(wù)器
在適當(dāng)?shù)臅r候,每一個個人分支(如 man1, man2)都需要 pull 一下 master 分支,以保證自己本地的代碼的版本不會低于服務(wù)器。
3. 多個服務(wù)器環(huán)境如果項目比較大,并且對應(yīng)多個服務(wù)器環(huán)境(測試環(huán)境、產(chǎn)品環(huán)境):
master:主分支
prod:產(chǎn)品分支,對應(yīng)產(chǎn)品服務(wù)器環(huán)境
test:測試分支,對應(yīng)測試服務(wù)器環(huán)境
dev:開發(fā)分支
使用流程:
構(gòu)建測試環(huán)境:
提交代碼到本地 dev 分支
在需要構(gòu)建項目時 merge 到本地 test 分支,并推送到遠(yuǎn)程 test 分支
持續(xù)集成構(gòu)建,然后同步到測試服務(wù)器
構(gòu)建產(chǎn)品環(huán)境可以由遠(yuǎn)程的 test 分支 merge 到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建,也可由本地 dev 或 test 分支 merge 到本地 prod 分支,并推送到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建。
如果是多人參與的項目,就需要個人開發(fā)分支了:
master:主分支
prod:產(chǎn)品分支,對應(yīng)產(chǎn)品服務(wù)器環(huán)境
test:測試分支,對應(yīng)測試服務(wù)器環(huán)境
man1:個人 man1 開發(fā)分支
man2:個人 man2 開發(fā)分支
使用流程:
構(gòu)建測試環(huán)境:
提交代碼到本地 man1 分支(以 man1 個人為例)
在需要構(gòu)建項目時 merge 到本地 test 分支,并推送到遠(yuǎn)程 test 分支(有可能需要先 pull 遠(yuǎn)程的代碼)
持續(xù)集成構(gòu)建,然后同步到測試服務(wù)器
構(gòu)建產(chǎn)品環(huán)境可以由遠(yuǎn)程的 test 分支 merge 到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建,也可由本地 man1 或 test 分支 merge 到本地 prod 分支,并推送到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建。
在適當(dāng)?shù)臅r候,每一個個人分支(如 man1, man2)都需要 pull 一下 prod 分支(如有需要,也可以 pull test 分支),以保證自己本地的代碼的版本不會低于服務(wù)器。
4. 多個需求同時開發(fā)有時候會有多個需求同時開發(fā),并且相互獨立,為了不影響每個需求的測試與上線,需要為每個需求創(chuàng)建一個分支。
master:主分支
prod:產(chǎn)品分支,對應(yīng)產(chǎn)品服務(wù)器環(huán)境
test:測試分支,對應(yīng)測試服務(wù)器環(huán)境
man1:個人 man1 開發(fā)分支
man2:個人 man2 開發(fā)分支
task1:需求 task1 開發(fā)分支
task2:需求 task2 開發(fā)分支
使用流程:
構(gòu)建測試環(huán)境與之前的步驟一致,但構(gòu)建產(chǎn)品環(huán)境時,為了保證各個需求不相互影響,一般由本地直接合并到 prod 分支:
本地 task1 分支 merge 到本地 prod 分支,并推送到遠(yuǎn)程 prod 分支進(jìn)行持續(xù)集成構(gòu)建
每一個個人分支(如 man1, man2)都需要 pull 一下 prod 分支,以保證自己本地的代碼的版本不會低于服務(wù)器
最后刪除 task1 分支
5. 多人協(xié)作開發(fā)修改公共文件因為不同分支修改同一個文件而導(dǎo)致的文件沖突是多人協(xié)作開發(fā)中比較常見的問題之一,避免這種問題的思路主要有以下的幾種:
在代碼層面,盡量避免多個成員都會改動的文件,盡量將代碼分解到每個人只負(fù)責(zé)自己的那塊代碼,不需要去改別人的代碼
在工程層面,盡量減少公共文件,盡量每個文件只由一個人負(fù)責(zé)
在 git 層面,如果有必要,可以多帶帶建一個分支,用于更新某些公共文件,并及時的更新到其他分支
6. 其他分支有一些常用的分支,可能我們會用到:
bug 分支:用于緊急修復(fù)產(chǎn)品環(huán)境的 bug
7. 根據(jù)情況調(diào)整、簡化流程上面的圖例只有測試服務(wù)器和產(chǎn)品服務(wù)器,更多服務(wù)器類型的工作流程是類似的;圖例也只有 man1 和 man2 兩個個人分支,更多個人分支的工作流程也是類似的。
上面的圖例主要用于以下特點的項目(需要把整個項目打包成一個整體):
單頁面 web 前端應(yīng)用,整個項目只有一個 html 文件,頁面之間的切換由本地路由控制,每次更新到服務(wù)器都需要打包所有頁面
Java、Go 等后端應(yīng)用,每次都需要打包成一個整體,可能是一個文件,或者一批文件(不打包成一個整體的方式除外,比如分散 java class 文件)
使用持續(xù)集成構(gòu)建的方式更新代碼到服務(wù)器
這樣做主要是為了避免一些問題:
線上新代碼被舊代碼覆蓋:多人同時開發(fā)項目,都需要更新到測試機(jī),如果不是統(tǒng)一 push 到 test 分支做持續(xù)集成構(gòu)建,很難保證線上新代碼不會被舊代碼覆蓋
未測試的代碼被更新到產(chǎn)品環(huán)境:這個問題也需要注意,因為這個問題并不能從流程上完全杜絕,需要各位在開發(fā)中留意
對于像下面這種特點的項目,可以根據(jù)情況調(diào)整、簡化流程:
多頁面 web 前端應(yīng)用,把某一個頁面更新到服務(wù)器并不影響其他頁面
NodeJs、PHP、Python 等后端應(yīng)用,只上傳自己更新的文件,而不影響服務(wù)器上其他文件(把所有代碼打包成一個整體的方式除外)
使用本地構(gòu)建的方式更新代碼到服務(wù)器
比如:
master:主分支
man1:個人 man1 開發(fā)分支
man2:個人 man2 開發(fā)分支
task1:需求 task1 開發(fā)分支
task2:需求 task2 開發(fā)分支
使用流程:
如果多個需求沒有沖突,可以同時在 man1 個人分支上開發(fā),并根據(jù)需要上傳到不同的服務(wù)器。
如果多個需求有沖突,可以每個需求都新建一個分支,如上圖所示:
提交代碼到本地 task1 分支(以 task1 個人為例)
根據(jù)需要上傳到不同的服務(wù)器
如果代碼通過產(chǎn)品環(huán)境后,更新到每個個人分支,并刪除 task1 分支
這樣子,就簡單很多了。
后續(xù)更多博客,查看 https://github.com/senntyou/blogs
作者:深予之 (@senntyou)
版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30103.html
摘要:項目如何進(jìn)行多人協(xié)作開發(fā)聲明本文不介紹的基本用法,需要讀者對命令使用有一定的了解現(xiàn)在,大部分項目都是用來管理代碼的,但當(dāng)項目變大多人協(xié)作時,的使用就變得復(fù)雜了,這時就需要在使用的流程上來思考如何更優(yōu)的使用。 web 項目如何進(jìn)行 git 多人協(xié)作開發(fā) 聲明:本文不介紹 git 的基本用法,需要讀者對 git、git 命令、git 使用有一定的了解 現(xiàn)在,大部分項目都是用 git 來管理...
摘要:項目如何進(jìn)行多人協(xié)作開發(fā)聲明本文不介紹的基本用法,需要讀者對命令使用有一定的了解現(xiàn)在,大部分項目都是用來管理代碼的,但當(dāng)項目變大多人協(xié)作時,的使用就變得復(fù)雜了,這時就需要在使用的流程上來思考如何更優(yōu)的使用。 web 項目如何進(jìn)行 git 多人協(xié)作開發(fā) 聲明:本文不介紹 git 的基本用法,需要讀者對 git、git 命令、git 使用有一定的了解 現(xiàn)在,大部分項目都是用 git 來管理...
摘要:引言本周精讀的文章是。精讀總的來說,雖然拆分子倉庫拆分子包是進(jìn)行項目隔離的天然方案,但當(dāng)倉庫內(nèi)容出現(xiàn)關(guān)聯(lián)時,沒有任何一種調(diào)試方式比源碼放在一起更高效。前端精讀幫你篩選靠譜的內(nèi)容。 1. 引言 本周精讀的文章是 The many Benefits of Using a Monorepo。 現(xiàn)在介紹 Monorepo 的文章很多,可以分為如下幾類:直接介紹 Lerna API 的;介紹如何...
摘要:詳解及實用指南之一本地操作詳解及實用指南之二遠(yuǎn)程操作創(chuàng)建與合并分支利用分支就可以實現(xiàn)多人開發(fā)的偉大模式,從而提高生產(chǎn)效率。分支默認(rèn)情況下,是一條線,利用指向最新的提交,再用批向就能確定當(dāng)前分支以及當(dāng)前分支的提交點。 1. git 詳解及實用指南之一 (本地操作) 2. git 詳解及實用指南之二 (遠(yuǎn)程操作) 1.創(chuàng)建與合并分支 利用分支就可以實現(xiàn)多人開發(fā)的偉大模式,從而提高生產(chǎn)效率。...
摘要:詳解及實用指南之一本地操作詳解及實用指南之二遠(yuǎn)程操作創(chuàng)建與合并分支利用分支就可以實現(xiàn)多人開發(fā)的偉大模式,從而提高生產(chǎn)效率。分支默認(rèn)情況下,是一條線,利用指向最新的提交,再用批向就能確定當(dāng)前分支以及當(dāng)前分支的提交點。 1. git 詳解及實用指南之一 (本地操作) 2. git 詳解及實用指南之二 (遠(yuǎn)程操作) 1.創(chuàng)建與合并分支 利用分支就可以實現(xiàn)多人開發(fā)的偉大模式,從而提高生產(chǎn)效率。...
閱讀 3768·2021-09-02 09:53
閱讀 2748·2021-07-30 14:57
閱讀 3492·2019-08-30 13:09
閱讀 1178·2019-08-29 13:25
閱讀 810·2019-08-29 12:28
閱讀 1453·2019-08-29 12:26
閱讀 1129·2019-08-28 17:58
閱讀 3304·2019-08-26 13:28