凉城旧巷
Python从入门到自闭,Java从自闭到放弃,数据库从删库到跑路,Linux从rm -rf到完犊子!!!

Git冲突分析及解决

一、git pull时冲突

  • 解决完冲突以后,原来的一个commit,会变成两个,解决冲突的过程也会被提交为一个commit

1、git pull在commit后执行

1)情景

git branch 
# * b_b
#   master

git add b.txt
git commit -m 'update b_b a.txt'

git pull origin master   # 此时提示冲突

![image-20230517163132700](E:\typra_image\127. Git冲突分析\image-20230517163132700.png)

 

2)解决

git status

vim a.txt   # 打开冲突文件,处理冲突内容, 冲突内容被 <<<<< 和 >>>>>>包裹,前面的是当前分支的变更,后面的是其它分支提交的变更

git add a.txt
git commit -m 'fix conflict'
git push origin b_b   # 此时会把所有本地commit给push到远程仓库

 

2、git pull在commit前执行

1)情景

git branch 
# * b_b
#   master

git pull origin master   # 此时提示冲突

  • 根据提示可知,此时pull,远程的变更并没有merge到本地,需要commit后再进行pull

 

2)解决

git status


# 1. 根据上图提示,先将变更commit
git add a.txt
git commit -m 'b_b update a.txt'



# 2. 再次pull,使其能够merge远程变更到本地,此时会报冲突
git pull origin master



# 3. 解决冲突,参考1.的解决步骤
git status

vim a.txt   # 打开冲突文件,处理冲突内容, 冲突内容被 <<<<< 和 >>>>>>包裹,前面的是当前分支的变更,后面的是其它分支提交的变更

git add a.txt
git commit -m 'fix conflict'
git push origin b_b   # 此时会把所有本地commit给push到远程仓库

 

二、Web中merge冲突

1、两个分支都提交merge

1)情景

在两个分支合并前,都没有冲突

 

合并其中有一个分支,另一个分支的merge request提示有冲突

 

2)解决

方式一:在web中进行处理

由1)中可见有Resolve conflicts,可以在web中进行处理冲突

 

方式二:本地解决冲突

(1)用户没有有master分支push全选

  • 将最新的master分支合并到当前分支,处理冲突后push,web中的冲突可以被解决,此时可以继续在web中进行merge
git checkout master
git pull # 更新master分支

git checkout -b b_b origin/b_b   # 切换到b_b分支

git pull origin master   # 将最新的master分支版本和当前分支合并,此时可能会出现冲突

vim xxx.txt   # 解决冲突

git add xxx.txt
git commit -m 'fix conflict'
git push origin b_b

 

(2)用户有master分支权限

  • 将开发分支merge到master分支,解决冲突后push,此时直接就会merge,web中的merge request就会消失
git checkout master
git pull # 更新master分支

git merge b_b   # 将开发分支合并到master分支,此时可能会出现冲突

vim xxx.txt   # 解决冲突

git add xxx.txt
git commit -m 'fix conflict'
git push origin master

 

三、本地merge冲突

1)情景

git branch
# * b_b
#   master


git add a.txt
git commit -m 'update a.txt by b_b'

git checkout master
git pull   # 更新master分支到最新
git merge b_b  # 将b_b分支merge到master上,此时可能会有冲突

 

2)解决

vim a.txt   # 解决冲突

git add a.txt
git commit -m 'fix conflict'
git push origin master

 

posted on 2023-05-19 09:33  凉城旧巷  阅读(622)  评论(0编辑  收藏  举报