0


使用 IDEA 模拟 Git 合并冲突

Step 1 : 创建新仓库

1.1 在 Gitee 平台上创建一个新的仓库,命名为 conflict-test

在这里插入图片描述

Step 2 : 在本地构建项目,并推送至远程仓库

我们需要像架构师一样,把项目搭好架子并推送至远程仓库,为后续开发做好准备工作。


2.1 打开 IDEA 并使用 Maven 搭建一个 Spring Boot 项目
    
    我的项目位于本地 D:\code\java\conflict-test
    项目结构如下

    conflict-test
    │
    ├── .idea
    │   └── ...
    │
    ├── pom.xml
    │
    ├── src
    │   └── main
    │       ├── java
    │       │   ├── controller
    │       │   │   └── ConflictTestController.java
    │       │   └── ConflictTestApplication.java
    │       └── resources
    │           └── application.yml
    │
    └── .gitignore
    

2.2 完成搭建后,在本地初始化仓库

在这里插入图片描述

这一步相当于在命令终端输入 git init 命令。现在项目目录下会出现一个.git文件夹(可以打开资源管理器查看)。


2.3 在项目目录下添加(如果有的话修改).gitignore 文件
    
    ### Maven 编译输出目录 ###
    target/

    ### IDEA 配置信息 ###
    .idea/
    

2.4 提交到本地仓库

在这里插入图片描述

这一步相当于在命令终端先后输入 git add . 命令和 git commit -m “项目构建” 命令,也就是让 git 将工作区中的所有文件添加到暂存区,然后提交到版本库中。现在本地工作环境中的三个区域的内容保持一致,如下图所示。
在这里插入图片描述


2.5 添加远程仓库地址

在这里插入图片描述
在这里插入图片描述

这一步相当于在命令终端输入 git remote add origin https://gitee.com/lybugproducer/conflict-test.git 命令。此时远程仓库的地址已经注册到本地仓库中,我们可以推送了。由于远程仓库没有提交历史,所以不需要拉取到本地。


2.6 推送到远程仓库

在这里插入图片描述

这一步相当于在命令终端输入 git push origin master 命令。此时远程仓库新增了一条推送记录。
在这里插入图片描述

Step 3 : 模拟多人开发,制造冲突

我们将搭建好的项目克隆到本地的两个不同目录下,模拟两个人同时进行开发的场景。我们让这两个人的开发内容有重叠部分,从而制造冲突。

3.1 克隆项目到本地的两个不同目录下
    
    程序员 A 进行开发的目录位于 D:\code\java\conflict\conflict-test-a
    程序员 B 进行开发的目录位于 D:\code\java\conflict\conflict-test-b
    

在这里插入图片描述
在这里插入图片描述


3.2 在两个项目中分别写一些代码,且存在重叠部分,写完后提交到各自的版本库

在这里插入图片描述
在这里插入图片描述


3.3 程序员 A 先将自己的代码推送到远程仓库

在这里插入图片描述

由于此前远程库没有更新,所以 A 在推送操作之前不需要进行拉取操作。


3.4 程序员 B 尝试将自己的代码推送到远程仓库

在这里插入图片描述

由于此前 A 将自己的提交记录推送到了远程仓库,而 B 的版本库中并没有这些提交记录,所以 B 的推送操作被拒绝了。因此 B 需要先将远程仓库中的更新抓取到本地,与自己的提交记录进行合并,解决冲突后一并推送至远程仓库。


3.5 使用合并方法合并远程更改

合并有两种策略,一种称为 merge 即“合并”,一种称为 rebase 即“变基”。我们这里使用 merge 策略,相当于在命令提示符窗口中先后输入 git fetch origin master 命令(抓取到本地)以及 git merge 命令(与本地版本库中的提交记录合并)。

在这里插入图片描述

正如我们预料到的那样,代码合并出现了冲突。此时,如果你通过命令提示符输入 git status -s 命令,你将会看到未解决的冲突文件被标记为 UU 状态。这里有三个选项:“接受您的更改”、“接受他们的”、“合并”,都是字面意思。

3.6 修改代码,解决冲突,提交合并后的文件

在这里插入图片描述

我们对照着本地版本库的最新提交(左侧)和远程仓库的最新提交(右侧),在中间进行取舍及修改,解决冲突合并代码,然后再做一次推送。我们看到远程仓库中出现了一条被命名为 Merge remote-tracking branch ‘origin/master’ 的提交记录。
在这里插入图片描述

标签: intellij-idea git java

本文转载自: https://blog.csdn.net/lybugproducer/article/details/143201028
版权归原作者 苑总 所有, 如有侵权,请联系我们删除。

“使用 IDEA 模拟 Git 合并冲突”的评论:

还没有评论