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 ...
随机推荐
- jsp笔记---标签
<meta>标签 <meta> 标签提供了 HTML 文档的元数据.元数据不会显示在客户端,但是会被浏览器解析. META元素通常用于指定网页的描述,关键词,文件的最后修改时间 ...
- vue引入echarts
效果图: 1.安装Echarts : npm install echarts -S 或者使用国内的淘宝镜像: 安装: npm install -g cnpm --registry=https: ...
- 去掉有定位的left值
left: initial; 一开始就是初始(默认值)的意思,就可以解决定位的left啦
- Hyperledger Fabric组织的动态添加和删除
前言 在Fabric定制联盟链网络工程实践中,我们虚拟了一个工作室的联盟链网络需求,并根据此需求分析了整个网络的架构且已经完成了一个简单 fabric 网络模型.本文将在其基础上,在 mychanne ...
- Codeforces Round #741 (Div. 2), problem: (D1) Two Hundred Twenty One (easy version), 1700
Problem - D1 - Codeforces 题意: 给n个符号(+或-), +代表+1, -代表-1, 求最少删去几个点, 使得 题解(仅此个人理解): 1. 这题打眼一看, 肯定和奇 ...
- JAVA语言学习day16--7月22日
###15用户选择功能 * A: 用户选择功能 * a: 案例代码 import java.util.ArrayList; import java.util.Scanner; /* * 超市管理系统主 ...
- vue--vuex 中 Modules 详解
前言 在Vue中State使用是单一状态树结构,应该的所有的状态都放在state里面,如果项目比较复杂,那state是一个很大的对象,store对象也将对变得非常大,难于管理.于是Vuex中就存在了另 ...
- 基础的CSS描绘测试
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 小米电视去广告之adb实战
近日闲来无事,对小米电视的开机广告.系统内置应用决定进行一波优化 安卓系统大部分都有一个"开发者模式", 在这个模式下可以放开手脚对系统进行一系列操作 此次要针对小米电视的UI使用 ...
- IDEA打包javaFX及踩坑解决
开门见山的说,先打包,再说坑. File-->Project Structure --> Artifacts-->(此处点加号)JAR-->From modules with ...