对付大部分 web 项目而言,并不像软件、APP 项目一样有版本的划分,而是不断的更新、迭代,这就使得 web 项目的 git 利用要繁芜一些,须要管理好哪些是正在开拓的代码、哪些是提交测试的代码、哪些是已经上线的代码、多人共同开拓时如何避免代码冲突与线上新代码被旧代码覆盖等等。
欢迎事情一到五年的Java工程师朋友们加入Java程序员开拓: 854393687
群内供应免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的韶光来学习提升自己,不要再用\"大众没有韶光“来掩饰笼罩自己思想上的
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 分支:用于紧急修复产品环境的 bug7. 根据情形调度、简化流程
上面的图例只有测试做事器和产品做事器,更多做事器类型的事情流程是类似的;图例也只有 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 分支这样子,就大略很多了
欢迎事情一到五年的Java工程师朋友们加入Java程序员开拓: 854393687
群内供应免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的韶光来学习提升自己,不要再用\"大众没有韶光“来掩饰笼罩自己思想上的