文章目录

  • 一、准备
  • 1-1、dev分支里面的README
  • 1-2、master分支里面的README
  • 1-3、说明
  • 二、冲突
  • 2-1、合并结果
  • 2-2、解决冲突一(有master分支操作权限)
  • 2-2-1、更新远程分支
  • 2-2-2、切换master分支、并拉取master分支代码
  • 2-2-3、拉取dev分支代码(当前分支是master)
  • 2-2-4、解决冲突
  • 2-2-5、提交代码
  • 2-3、解决冲突二(无master分支权限)
  • 2-3-1、更新远程分支
  • 2-3-2、切换dev分支、并拉取dev分支代码
  • 2-3-3、拉取master分支代码(当前是dev分支)
  • 2-3-4、解决冲突
  • 2-3-5、提交代码
  • 三、其它



从接触git到现在大概有三年之久了,也使用它工作一年之久,但直到写这篇文章之前,依旧对它的

冲突很恐惧。

而现在只能算是说麻烦,不能算是说恐惧了,下面就把我目前对git冲突解决经验传授给大家。



一、准备

这里主要是讲怎么解决冲突,所以对于其它的尽量能少则少。

使用gitee创建一个项目,项目初始有一个README.MD和两个分支devmaster



1-1、dev分支里面的README

TEST- dev



1-2、master分支里面的README

TEST- master



1-3、说明

两个分支同一个文件里面的代码不一样,如果合并就会冲突。

现在我们就来合并分支 dev > master



二、冲突

2-1、合并结果

gitlab fork 冲突处理 gitlab冲突解决完成_gitlab

此 Pull Request 无法自动合并,你应该手动合并它

注:实际我们多用的是gitlab,上面的英文翻译一下大意也是如此。



解决冲突的步骤:

  1. 把两个分支的代码都拉到你本地
  2. 手动去把代码整合一下
  3. 提交你的本地代码


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、解决冲突

这个时候你的本地代码会如下:

gitlab fork 冲突处理 gitlab冲突解决完成_git_02

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

gitlab fork 冲突处理 gitlab冲突解决完成_gitlab fork 冲突处理_03

2-2-5、提交代码
# 添加全部的文件,这里为了演示方便,你可以添加具体的文件
git add .
# 提交代码到本地仓库
git commit -m '解决冲突'
# 提交代码到线上仓库
git push origin master

提交到线上后,我们的那个分支合并,也会自动合并好了。



2-3、解决冲突二(无master分支权限)

  • 实际开发中我们很可能没有这个分支的提交权限,我们只能拉取代码。

使用上面的方式再来重新制造一个冲突。

gitlab fork 冲突处理 gitlab冲突解决完成_gitlab fork 冲突处理_04

其实原理是一样的,之前我们是在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

这时候合并请求便会如下:

gitlab fork 冲突处理 gitlab冲突解决完成_git冲突解决_05

这个意思是现在已经没有冲突了,但是你没权限合并,找有权限的人给你合并。



三、其它

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