Git冲突提交

实际单个模块的开发往往不是单独一个人来进行操作,当多个人协同开发相同的一个项目时,就会涉及到提交冲突的问题。

1. 不同人修改不同文件

(1)在远程仓库添加gitLab.txt

1706146898301

(2)在本地IDEA中添加代码,继续进行第二个模块的开发

1
2
3
4
5
public class Module2 {
public static void main(String[] args) {
System.out.println("开始进行模块2的开发");
}
}

(3)提交代码到远程仓库,此时会有报错信息

1705549702169

Git会智能识别,采用merge合并命令,拉取远端文件到本地进行合并。

(4)查看Git提交的全部历史记录,可以看到中间有拉取Gitee日志的部分

1706146278780

2. 不同人修改同文件的不同区域

(1)远程仓库修改module1代码

1
2
3
4
5
public class Module1 {
public static void main(String[] args) {
System.out.println("没完成模块1的开发");
}
}

(2)本地IDEA继续添加代码

1
2
3
4
5
6
//添加注释
public class Module1 {
public static void main(String[] args) {
System.out.println("完成模块1的开发");
}
}

(3)提交代码,之后push到远程仓库

1705550474743

同样可以采用merge命令,git会自动合并不同的区域代码。

1706146956838

1706146975271

3. 不同人修改同文件的相同区域

(1)远程仓库添加模块开发顺利

1705551269043

(2)本地IDEA添加模块开发遇到了bug

1
2
3
4
5
6
7
8
public class module1 {
public static void main(String[] args) {
System.out.println("完成第一个模块的开发");
System.out.println("继续进行第一个模块的二次开发");
System.out.println("模块开发继续!!!");
System.out.println("模块开发遇到了bug!");
}
}

1705551516941

无法直接采用merge命令,需要人为判断哪些作为最终的结果来保留

(3)之后需要重新提交到远程仓库

1705551702149

4. 同时变更文件名和文件内容

(1)本地IDEA修改原先的文件名称为Module1plus,之后重新开发实现功能

1
2
3
4
5
6
7
8
9
//添加注释
public class Module1plus {
public static void main(String[] args) {
System.out.println("没完成模块1的开发");
System.out.println("模块1的开发遇到了bug");
System.out.println("完成了模块1的开发");
System.out.println("进一步完成了模块1的拓展开发");
}
}

(3)提交代码修改到远程仓库

1705552452300

可以直接提交成功。

5. 不同人把同一文件改成不同的文件名

(1)远程仓库把文件名称改为module1

(2)本地IDEA修改文件名称为module3

(3)提交到远程仓库

1705552598042

(4)需要手动宣传使用哪一个

1705552665960

push会导致报错,之后需要用户自己解决保留哪些文件。

(5)使用命令解决最终的冲突

1
2
3
C:\mybigdata\project\gitlab_demo>git status
#删除掉报红找不到的文件
C:\mybigdata\project\gitlab_demo>git rm src/main/java/com/atguigu/Module1Plus.java

(6)最后重新选择正确的代码提交到仓库

1706151049392