git冲突的产生以及解决

时间:2024-03-23 20:18:39

在只有一个本地master分支的情况下是不会产生冲突的,但是通常开发都需要多分支开发,就容易产生合并冲突。以两个分支的冲突为例,具体是两个已经commit的分支对相同文件相同位置的不同操作(比如对代码的同一行进行了不同的修改),然后在主分支进行合并,就会产生冲突。下面举个例子,环境是vscode。
先在master分支创建一个新文件t1.cpp并提交
git冲突的产生以及解决
接下来新建两个分支,模拟两个人来修改t1.cpp

先新建一个分支b1,然后在b1中修改t1.cpp并提交,如下图
git冲突的产生以及解决
然后再创建另一个分支b2做修改,如下图:
git冲突的产生以及解决
然后切换回master分支,假设第一个人用的是b1分支,他写完代码后开始合并到master分支,那当然是成功的,因为在他之前没人合并。
git冲突的产生以及解决
接下来另一个使用b2分支开发的人也要来合并到master分支,就会出现冲突
git冲突的产生以及解决
这就是因为两个不同的分支去修改了同一个文件的同一个位置,而且修改的内容又不一样,一合并到master分支就会出问题。
下面可以使用vscode的“比较变更”进行比对,然后手动去修复冲突,注意这是演示而已,

实际上修复冲突要和其他开发者共同协商,绝对不要擅自拉别的分支去试图解决冲突,或着找文件覆盖 。

同时记住,解决了冲突之后要add和commit 最后push。为保证万无一失,最后在冲突都解决之后,要重启项目,确保没问题之后再去push到远程仓库。下面演示下vscode的比较变更,其他三个选项为冲突修复
git冲突的产生以及解决
下面是比较变更的图
git冲突的产生以及解决
可以看到增减的情况(红色那一行和黄色那一行),但是无法编辑,因为是只读的。可以到其他三个选项去选择修复。
比如我点保留双方更改git冲突的产生以及解决
就会变成下图
git冲突的产生以及解决
解决冲突后:
git冲突的产生以及解决

最后别忘了push到远程。

git冲突的产生以及解决
git冲突的产生以及解决