【中】Git冲突解决,使用Git命令解决冲突【通用版】
大约 4 分钟
从接触git到现在大概有三年之久了,也使用它工作一年之久,但直到写这篇文章之前,依旧对它的冲突很恐惧。
而现在只能算是说麻烦,不能算是说恐惧了,下面就把我目前对git冲突解决经验传授给大家。
一、准备
这里主要是讲怎么解决冲突,所以对于其它的尽量能少则少。
使用gitee创建一个项目,项目初始有一个README.MD
和两个分支dev
、master
。
1-1、dev分支里面的README
TEST- dev
1-2、master分支里面的README
TEST- master
1-3、说明
两个分支同一个文件里面的代码不一样,如果合并就会冲突。
现在我们就来合并分支 dev
> master
二、冲突
2-1、合并结果

此 Pull Request 无法自动合并,你应该手动合并它
注:实际我们多用的是gitlab,上面的英文翻译一下大意也是如此。
解决冲突的步骤:
- 把两个分支的代码都拉到你本地
- 手动去把代码整合一下
- 提交你的本地代码
2-2、解决冲突一(有master分支操作权限)
如果你有master分支的权限,你可以使用这个办法。
一般冲突后会提示你解决的办法,也是此办法。
2-2-1、更新远程分支
这一步一般不做,大部分这两个分支本地都有,但是可能出现没有的情况,所以运行一下也没什么关系。
git fetch
2-2-2、切换master分支、并拉取master分支代码
git checkout master
git pull origin master
2-2-3、拉取dev分支代码(当前分支是master)
git pull origin dev
2-2-4、解决冲突
这个时候你的本地代码会如下:

我们按照正确的代码格式,把本地代码整理成如下

2-2-5、提交代码
# 添加全部的文件,这里为了演示方便,你可以添加具体的文件
git add .
# 提交代码到本地仓库
git commit -m '解决冲突'
# 提交代码到线上仓库
git push origin master
提交到线上后,我们的那个分支合并,也会自动合并好了。
2-3、解决冲突二(无master分支权限)
- 实际开发中我们很可能没有这个分支的提交权限,我们只能拉取代码。
使用上面的方式再来重新制造一个冲突。

其实原理是一样的,之前我们是在master
分支上解决冲突,现在我们在dev
分支上去解决冲突。
2-3-1、更新远程分支
这一步一般不做,大部分这两个分支本地都有,但是可能出现没有的情况,所以运行一下也没什么关系。
git fetch
2-3-2、切换dev分支、并拉取dev分支代码
git checkout dev
git pull origin dev
2-3-3、拉取master分支代码(当前是dev分支)
git pull origin master
2-3-4、解决冲突
如上面一样,按照自己正确的代码进行调整
2-3-5、提交代码
# 添加全部的文件,这里为了演示方便,你可以添加具体的文件
git add .
# 提交代码到本地仓库
git commit -m '解决冲突'
# 提交代码到线上仓库
git push origin dev
这时候合并请求便会如下:

这个意思是现在已经没有冲突了,但是你没权限合并,找有权限的人给你合并。
三、其它
- 这里的dev分支代表你的开发分支,master分支标识要合并的分支
- 我这里使用的
gitee
提示都是中文的,如果你使用gitlab
提示是英文的,大意都是一样的 - 如果你没有合并权限的时候可能会出现
合并冲突
、没有需要合并的
、找有权限的人给你合并
,记得翻译一下英文,不然可能闹出笑话。 - 如果你明白了上面的含义,实际上遇到冲突了只可能是冲突文件比较复杂会难得处理,但不会手足无措。
- 我这里为了通用性都是使用的
git命令
,实际开发大家可以结合具体的软件(IDEA
、VSCODE
)可能会更简单。