1.6.1 Linux常用命令
1.6.2 Docker常用命令
1.6.3 你们代码是如何管理的
在我们项目开发过程中, 我们使用GIT进行项目代码管理 , 主要使用的是阿里云效的GIT仓库服务/自己搭建的Gitlab服务
阿里云效的GIT仓库服务和自己搭建的Gitlab服务二选其一
1.6.4 你常用的Git命令有哪些
- git clone : 从远程仓库克隆代码仓库
- git add : 添加本地文件进暂存区
- git commit : 提交本地代码到本地仓库
- git branch : 查看本地分支
- git branch 分支名称 : 创建分支
- git checkout 分支名称 : 切换到指定分支
- git push origin 分支名称 : 推送本地仓库到远程
- git pull origin 分支名称 : 从远程分支拉取仓库 , 自动合并
- git fetch origin 分支名称 : 从远程抓取代码 , 不合并
- git status : 查看本地仓库状态
- git log : 查看本地仓库提交日志
- git tag 标签名称 : 创建tag
- git diff 工作区与暂存区的差异
- git reset HEAD^ 恢复成上次提交的版本
- git reset –hard 版本号
- –soft:只是改变HEAD指针指向,缓存区和工作区不变;
- –mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变;
- –hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态;
- git revert HEAD # 撤销最近的一个提交
- git revert 版本号 # 撤销某次commit
1.6.5 git pull , git merge , git fetch
命令的区别是什么 ?
git clone:
是在本地没有版本库的情况下,从远程仓库克隆一份到本地,是一个本地版本库从无到有的过程
git pull:
是在本地仓库已经存在的情况下,将远程最新的commits抓取并合并到本地版本库的过程
git fetch:
从远程版本库抓取最新的commits,不会进行合并
git merge:
分支合并
1.6.6 你们项目开发过程中分支是怎么管理的 ?
我们项目开发过程中主要包括六种类型的分支
- master分支 : 存放的是随时可供在生产环境中部署的稳定版本代码 , 一般不会轻易修改
- develop分支 : 开发分支 , 有新版本的功能需要开发的时候会创建develop分支
- feature分支 : 如有几个同事同时开发,需要分割成几个小功能,每个人都需要从develop中拉出一个feature分支,但是每个feature颗粒要尽量小,因为它需要我们能尽早merge回develop分支,否则冲突解决起来就没完没了
- release分支 : 新版本开发完毕之后 , 即将发布上线, 会从develop分支上创建release分支 , 如果代码有缺陷可以直接在release分支上进行修复 , release分支确定之后会将代码合并到master分支 , 命名一般为
release/版本号
- bugfix分支 : 软件发布以后,难免会出现bug。这时就需要从master或者release分支创建一个bug分支,进行bug修补 , 修复完毕后合并到develop分支/master分支和release分支
- hotfix分支 : 线上紧急bug修复 , 修复完毕之后合并到master
1.6.7 在你们开发过程中遇到冲突如何解决 ?
在开发的过程中如果两个开发者分别在本地进行代码开发, 开发完毕后提交代码到本地仓库, 如果这两个开发者对同一个或者多个文件进行了修改, 那么后提交代码的开发者则提交不成功 , 会报代码冲突错误
出现冲突之后 , 代码推送就不会成功, 这个时候需要执行git pull
命令从远程拉取最新代码, 拉取之后通过git status
命令查看冲突的文件 , 然后通过开发工具打开冲突文件 , 对文件冲突进行解决 , 文件中会明确的表名冲突的位置 , 以及本地代码和远程代码的最新内容 , 如果自己能确定如何修改就自己该就行了 , 如果不确定 , 可以通过git log
指令查看该版本是谁提交的 , 找到同时讨论看如何调整代码 , 代码调整完毕之后通过git add
命令, 标记冲突已解决, 然后正常提交 , 推送即可
1.6.8 什么时候应使用 git stash
当我们正在 feature 分支上开发新功能。这时,生产环境上出现了一个 bug 需要紧急修复,这个时候我们的代码还没开发完,不想提交 , 这个时候可以用 git stash 命令先把工作区已经修改的文件暂存起来,然后切换到 bugfix 分支上进行 bug 的修复,修复完成后,切换回 feature 分支,从堆栈中恢复刚刚保存的内容
在切换之前需要存储一下当前分支的修改
git stash save "message"
message 是执行存储时的备注
若在这个主分支上修复bug完毕,回到feature时
git stash pop // 应用最近一次暂存的修改,并删除暂存的记录
1.6.9 使用Maven遇到依赖冲突如何解决
依赖冲突是我们在开发中经常会遇到的问题 , 遇到冲突之后我们可以通过如下手段进行解决 :
方式一 : 使用<exclusions>
排除依赖
<!--seata-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<exclusions>
<!--版本较低,1.3.0,因此排除-->
<exclusion>
<artifactId>seata-spring-boot-starter</artifactId>
<groupId>io.seata</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<!--seata starter 采用1.4.2版本-->
<version>${seata.version}</version>
</dependency>
方式二 : 使用<dependencyManagement>
提前设置依赖版本(推荐使用)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<!--seata starter 采用1.4.2版本-->
<version>${seata.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
1.6.10 Maven的生命周期包括哪些阶段
Maven的生命周期主要包括清理(clean)、验证(validate )、编译(compile)、测试(test)、打包(package)、安装(install)、部署(deploy)和站点生成(site)等步骤
在执行一个maven命令的时候, 前面的声明周期也会执行一遍
例如 : 我们在执行安装命令的时候 , 会先执行编译,测试,打包之后再执行安装