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

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   凉城旧巷  阅读(947)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示