专栏名称: SegmentFault思否
SegmentFault (www.sf.gg)开发者社区,是中国年轻开发者喜爱的极客社区,我们为开发者提供最纯粹的技术交流和分享平台。
目录
相关文章推荐
OSC开源社区  ·  RAG市场的2024:随需而变,从狂热到理性 ·  17 小时前  
码农翻身  ·  漫画 | 为什么大家都愿意进入外企? ·  昨天  
程序猿  ·  41岁DeepMind天才科学家去世:长期受 ... ·  昨天  
OSC开源社区  ·  宇树王兴兴早年创业分享引围观 ·  3 天前  
OSC开源社区  ·  升级到Svelte ... ·  4 天前  
51好读  ›  专栏  ›  SegmentFault思否

web 项目如何进行 git 多人协作开发

SegmentFault思否  · 公众号  · 程序员  · 2019-02-20 08:00

正文

声明:本文不介绍 git 的基本用法,需要读者对 git、git 命令、git 使用有一定的了解

现在,大部分项目都是用 git 来管理代码的,但当项目变大、多人协作时,git 的使用就变得复杂了,这时就需要在 git 使用的流程上来思考如何更优的使用 git。

对于大部分 web 项目而言,并不像软件、APP 项目一样有版本的划分,而是不断的更新、迭代,这就使得 web 项目的 git 使用要复杂一些,需要管理好哪些是正在开发的代码、哪些是提交测试的代码、哪些是已经上线的代码、多人共同开发时如何避免代码冲突与线上新代码被旧代码覆盖等等。

1. 一个分支

如果项目比较小,不频繁更新时,可以只用 master 一个分支。

使用流程:

说明:

  1. 提交代码到本地 master 分支,并推送到远程 master 分支

  2. 持续集成构建或本地构建,然后上传到服务器

上传到服务器有两种方式:

  1. 持续集成构建,然后同步到服务器

  2. 本地构建,然后上传到服务器(为了简洁清晰,后面的图例中会隐藏这种方式)

2. 开发分支与个人分支

如果项目稍大些,频繁更新时,就需要另外一个开发分支:

  • master :主分支,对应线上代码

  • dev :开发分支,对应开发代码

使用流程:

说明:

  1. 提交代码到本地 dev 分支

  2. 在需要构建项目时 merge 到本地 master 分支,并推送到远程 master 分支

  3. 持续集成构建,然后同步到服务器

如果是多人参与的项目,就需要个人开发分支了:

  • master :主分支,对应线上代码

  • man1 :个人 man1 开发分支

  • man2 :个人 man2 开发分支

使用流程:

说明:

  1. 提交代码到本地 man1 分支(以 man1 个人为例)

  2. 在需要构建项目时 merge 到本地 master 分支,并推送到远程 master 分支(有可能需要先 pull 远程的代码)

  3. 持续集成构建,然后同步到服务器

在适当的时候,每一个个人分支(如 man1 , man2 )都需要 pull 一下 master 分支,以保证自己本地的代码的版本不会低于服务器。

3. 多个服务器环境

如果项目比较大,并且对应多个服务器环境(测试环境、产品环境):

  • master :主分支

  • prod :产品分支,对应产品服务器环境

  • test :测试分支,对应测试服务器环境

  • dev :开发分支

使用流程:

构建测试环境:

  1. 提交代码到本地 dev 分支

  2. 在需要构建项目时 merge 到本地 test 分支,并推送到远程 test 分支

  3. 持续集成构建,然后同步到测试服务器

构建产品环境可以由远程的 test 分支 merge 到远程 prod 分支进行持续集成构建,也可由本地 dev test 分支 merge 到本地 prod 分支,并推送到远程 prod 分支进行持续集成构建。

如果是多人参与的项目,就需要个人开发分支了:

  • master :主分支

  • prod :产品分支,对应产品服务器环境

  • test :测试分支,对应测试服务器环境

  • man1 :个人 man1 开发分支

  • man2 :个人 man2 开发分支

使用流程:

构建测试环境:

  1. 提交代码到本地 man1 分支(以 man1 个人为例)

  2. 在需要构建项目时 merge 到本地 test 分支,并推送到远程 test 分支(有可能需要先 pull 远程的代码)

  3. 持续集成构建,然后同步到测试服务器

构建产品环境可以由远程的 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 分支:

  1. 本地 task1 分支 merge 到本地 prod 分支,并推送到远程 prod 分支进行持续集成构建

  2. 每一个个人分支(如 man1 , man2 )都需要 pull 一下 prod 分支,以保证自己本地的代码的版本不会低于服务器

  3. 最后删除 task1







请到「今天看啥」查看全文