git实战-多分支开发-2022新项目
现在开发中大多数公司中都在使用Git这个代码版本管理工具,几乎可以说是已经成为标配,刚入职不久的这家新公司也不例外。
去公司没多久,开始搭建项目,然后创建开发分支,有多少个后端人员就创建多少个开发分支,每个人都在自己的分支上进行开发。

如上图所示:我们假设有四个开发人员鸣人、佐助、雏田、小樱,首先创建一个主要的开发分支 bigstuff-release-V1,然后根据 bigstuff-release-V1这个分支在创建
四个分支分别给四个开发人员使用,以每个人的名字缩写作为分支的后缀。每个人的代码都提交到自己的分支上面,并且是以 bigstuff-release-V1这个分支为主线,部署
代码的时候,也是部署在这个分支上面。日常开发的时候,作为普通的开发人员鸣人,需要对git操作的事情就三件:.a.提交本地代码到自己的开发分支bigstuff-release-V1-mr
上面;.b.将bigstuff-release-V1分支上面的代码合并到自己的分支bigstuff-release-V1-mr上面;.c.将bigstuff-release-V1-mr分支上面的代码合并到bigstuff-release-V1-mr分支上,
下面分别讲解。
操作一:提交本地代码到自己的开发分支bigstuff-release-V1-mr
首先需要拉取分支上的代码,方式可以使用命令行,使用git clone 代码地址 的方式或者使用IDEA的方式进行拉取,看个人的喜好。本人是使用IDEA的方式进行拉取,如果
使用IDEA打开某个项目时,没有显示VCS这个菜单栏,则可以新建一个空的项目,这个菜单就会显示出来,然后按照下面的操作即可。第一次拉取一般需要输入git的账号和密码。

添加Git代码的地址,选择好对应的目录即可。

拉取代码后,IDEA右下角会显示当前对应的分支版本,如下图所示(只是举例,真实开发环境为内网,不让截图)

拉取代码后,下一步操作就是切换到自己的分支,使用命令行操作或者IDEA操作都可以,看个人喜好,本人是使用IDEA操作.

拉取鸣人自己分支bigstuff-release-V1-mr上最新代码的操作方式如下,

需要选择一个分支,然后拉取代码.

提交代码的方式方式如下,在IDEA的右上角有一个打钩的图标,点击它即可,同样,使用命令行操作也可以,看个人喜好。

会显示如下信息,让自己选择需要提交的文件,不同的IDEA显示方式会不一样。这里需要注意,在选择需要提交的文件时,不要提交一些没用的文件,
如IDEA配置文件iml。提交信息是一定要添加的,这是个好习惯,写一个简单的描述这次提交的代码做了什么事情,然后点击提交即可。

最后一步是push代码,即是真正的提交自己本地的代码到远程分支上面,操作方式如下:

首先选择对应的分支,不要选错了,提交到别人的分支上面去了就尴尬了;其次是选择需要提交的内容;最后点击push即可。至此在自己的分支上的所有操作介绍完毕。

操作二:将bigstuff-release-V1分支上面的代码合并到自己的分支bigstuff-release-V1-mr上面.
开发中需要经常进行的一个操作就是将主要开发分支上bigstuff-release-V1上的代码同步到自己的开发分支上,因为别人可能会对代码进行修改,
同步的方式为使用合并来进行。这种合并方式一般是在本地进行,因为可能会存在代码冲突,冲突需要在本地解决。内网开发不能截图,只有文字说明。
操作钱需要确保自己本地修改的代码已经提交或者是已经备份,避免代码出现问题后自己的修改记录消失。
操作方式为:(1)切换到主开发分支bigstuff-release-V1,切换方式和拉取代码时的切换方式一样,然后拉取主开发分支的最新代码,因为别人可能有代码提交。
(2)将分支切换为自己的开发分支bigstuff-release-V1-mr,执行合并操作。本人是使用命令来进行合并,打开项目的根目录,打开git操作窗口,执行命令
git merge bigstuff-release-V1 意思就是将bigstuff-release-V1分支的代码合并到bigstuff-release-V1-mr分支。如果不想合并,可以撤销合并操作。
(3)这时候IDEA右下角会显示当前的状态为mergeing合并中,如果没有代码冲突,则直接按照操作一的方式来提交代码即可。注意提交记录中会包含bigstuff-release-V1
分支上之前已经提交的记录,不用管它一起提交。
(4)解决冲突。很多情况下可能都会存在冲突的情况,这时候就需要我们手动去解决冲突。存在冲突的文件会显示为红色,可以查询单个冲突文件的详细对比信息,
如是什么地方冲突,然后就是怎么解决。自己一般的解决方式为接受其他人的文件,然后在将自己在文件上的改动手动加上去。
(5)解决冲突后编译一下所有的代码,确保可以正常编译后,再次提交代码,提交方式同操作一中的一样,还是全部记录都进行push。这样就将远程主要的开发分支
的最新代码合并到自己的开发分支上。
參考博文
https://www.cnblogs.com/linjiqin/p/7756164.html
撤销合并代码的操作
https://www.cnblogs.com/wangkongming/p/4164732.html
操作三:将bigstuff-release-V1-mr分支上面的代码合并到bigstuff-release-V1分支上
这一步操作可以在git的后台管理网站中进行,可是需要注意的一点是发起合并请求时,不能存在冲突,如果存在就需要取消合并。以下用gitee上的合并请求说明.

创建新的合并请求,需要选择源分支,然后选择目标分支,意思就是将源分支上面的代码合并到目标分支上。这里的源分支是bigstuff-release-V1-mr分支,
目标分支是bigstuff-release-V1 ,记得填写注释信息和审核人信息。发起合并操作后,等待审核人审核,通过后就自动进行合并了。完成这一步后所有的
操作全部完成。
总结:上面这三步操作基本上包含了在项目中使用Git操作代码的常规方式,学会后就可以应对常规的开发工作。采用这种方式的缺点是,合并代码的
时候会比较麻烦,每一次别人代码有改动都需要进行合并。优点是操作比较规范,每个人基本上都只操作自己的分支,合并代码和解决冲突都是在自己的分
支上进行,这样相对来说也比较好解决冲突问题。不去直接操作主要的开发分支,让主要的开发分支的代码保持是最新的,别人想获取最新代码直接做同样
的操作即可, 减少出错的可能性。如果各位有更好的意见,欢迎留言说明。
git实战-多分支开发-2022新项目的更多相关文章
- 项目开发中Maven的单向依赖-2022新项目
一.业务场景 工作多年,在真实的项目开发中经常会遇到将一个项目拆分成多个工程的情况,比如将一个真实的项目拆分成controller层,service层, dao层,common公共服务层等等.这样拆分 ...
- mybatis-拦截器实际应用-替换表名-2022新项目
一.业务场景 考虑到新项目中部分与业务数据相关的表在后期数据量会比较大,架构师在最开始设计项目中与业务数据相关的表时,就已经考虑使用分表来 进行处理,给业务数据相关的每张表都添加统一批次的后缀,查询这 ...
- 无法访问mybatis.dto.StudengInVO-使用maven编译报错-2022新项目
一.问题由来 最近一次拉代码后,合并代码然后进行编译时出现一个问题,使用maven在进行编译的时候报一个错,无法访问mybatis.dto.StudengInVO. 突然出现这个错误让自己感觉很奇怪, ...
- Entity Framwork(EF) 7——在现在数据库的甚而上开发MVC 新项目
一.开发背景: 由于老系统已经无法满足实际业务需求,需在现有数据库的甚而上开发新的项目. 二.困难点: 而EF默认情况下是要删除现有数据库表格后重新创建,这是不允许的.当你创建数据库对象时系统会提示“ ...
- git 在某个分支下创建新分支
首先要强调一个观念,那就是在某个分支A下创建新的分支B,是指使用A分支下的代码,并不是A/B这样的层级结构. 比如,我想要在非主分支dev 下面创建子分支dev_dev >>>1.创 ...
- Java异步记录日志-2022新项目
一.业务场景 web项目开发中,经常会有的一个操作是记录请求日志,比如记录请求的IP地址,记录请求的路径,记录请求的参数等等. 每个系统都会根据自己的需要来记录一些请求相关的日志.一般会将记录的日志信 ...
- redis缓存恢复-2022新项目
一.业务场景 Web项目开发中,为了加快数据处理的的效率,大量的使用了各种缓存,缓存技术主要使用的是redis.导致出现的小小的 问题是对redis缓存形成了一个比较强的依赖,并且有的数据暂时是没有同 ...
- 程序包 applets.user.service.UserService 不存在-2022新项目
一.问题由来 接上一篇文章使用maven进行打包时报中文乱码错误,经过多次尝试后最终解决问题,显示出真正的错误信息如下: 程序包 applets.user.service.UserService 不存 ...
- postgresql使用group by进行数据去重-2022新项目
一.业务场景 数据去重是web开发中经常会遇到的方式之一,数据库操作中有一个关键字distinct主要就是用来做这件事,用来进行去重. 比如进行统计查询的时候,可以这样写 select count(d ...
随机推荐
- Java/C++实现模板方法模式---数据库操作
对数据库的操作一般包括连接.打开.使用.关闭等步骤,在数据库操作模板类中我们定义了connDB().openDB().useDB().closeDB()四个方法分别对应这四个步骤.对于不同类型的数据库 ...
- Message: 'geckodriver' executable needs to be in PATH
1.下载geckodriver.exe:下载地址:mozilla/geckodriver请根据系统版本选择下载:(如Windows 64位系统) 2.下载解压后将getckodriver.exe复制到 ...
- Cannot get a STRING value from a NUMERIC cell poi异常解决
ref:http://www.tpyyes.com/a/kuozhan/2017/0902/199.html poi导入excel表格数据时报java.lang.IllegalStateExcepti ...
- 在tomcat布置项目
1.将项目打成war包复制到tomcat-webapps 2.修改tomcat端口号 3.指定jdk 一.找到tomcat目录/bin 文件夹下的 catalina.bat文件 二.在文件中找到 ec ...
- 微信jssdk分享(附代码)
老规矩---demo图: (注释:微信分享只支持右上角三个点触发) ======> 老规矩上菜: 1. 这边我封装了 share.js function allSharefun(param) ...
- 如何在 Java 中实现无向环和有向环的检测
无向环 一个含有环的无向图如下所示,其中有两个环,分别是 0-2-1-0 和 2-3-4-2: 要检测无向图中的环,可以使用深度优先搜索.假设从顶点 0 出发,再走到相邻的顶点 2,接着走到顶点 2 ...
- 演示默认学习用户scott,默认密码是tiger
默认学习用户scott,默认密码是tiger oracle@prd:/home/oracle$sqlplus /nolog SQL> conn scott/tiger ERROR: ORA-28 ...
- JAVA 进程线程详解
线程和进程 一.进程 进程是指运行中的程序,比如我们使用QQ,就启动该进程分配内存空间. 进程是程序的一次执行过程,或是正在运行的一个程序.是一个动态的过程:有它自升的产生,存在和消亡的过程 二.线程 ...
- Codeforces Round #700 (Div. 2) --- B(思维)
传送门 有必要提醒自己一下, 先把题读利索了(手动捂脸) 题目 B. The Great Hero The great hero guards the country where Homer li ...
- 2021.08.06 P2441 角色属性树(树形结构)
2021.08.06 P2441 角色属性树(树形结构) P2441 角色属性树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求离x最近的祖先y且(x,y)>1. ...