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