问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

git 的gui 合并产生冲突怎么解决

发布网友 发布时间:2022-05-06 11:43

我来回答

3个回答

热心网友 时间:2022-06-30 09:30

冲突的产生
很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突。
而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突。
git pull会自动merge,repo sync会自动rebase,所以git pull和repo sync也会产生冲突。当然git rebase就更不用说了。
冲突的类型
逻辑冲突

git自动处理(合并/应用补丁)成功,但是逻辑上是有问题的。
比如另外一个人修改了文件名,但我还使用老的文件名,这种情况下自动处理是能成功的,但实际上是有问题的。
又比如,函数返回值含义变化,但我还使用老的含义,这种情况自动处理成功,但可能隐藏着重大BUG。这种问题,主要通过自动化测试来保障。所以最好是能够写出比较完备的自动化测试用例。
这种冲突的解决,就是做一次BUG修正。不是真正解决git报告的冲突。
内容冲突

两个用户修改了同一个文件的同一块区域,git会报告内容冲突。我们常见的都是这种,后面的解决办法也主要针对这种冲突。
树冲突

文件名修改造成的冲突,称为树冲突。
比如,a用户把文件改名为a.c,b用户把同一个文件改名为b.c,那么b将这两个commit合并时,会产生冲突。
$ git status
added by us: b.c
both deleted: origin-name.c
added by them: a.c
如果最终确定用b.c,那么解决办法如下:
git rm a.c
git rm origin-name.c
git add b.c
git commit
执行前面两个git rm时,会告警“file-name : needs merge”,可以不必理会。

树冲突也可以用git mergetool来解决,但整个解决过程是在交互式问答中完成的,用d 删除不要的文件,用c保留需要的文件。
最后执行git commit提交即可。
内容冲突的解决办法
发现冲突

一般来讲,出现冲突时都会有“CONFLICT”字样:
$ git pull
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

但是,也有例外,repo sync的报错,可能并不是直接提示冲突,而是下面这样:
error: project mini/sample
注:无论是否存在冲突,只要本地修改不是基于服务器最新的,它都可能报告这个错误,解决方法都是一样。

这个时候,需要进入报错的项目(git库)目录,然后执行git rebase解决:
git rebase remote-branch-name
冲突解决的一般过程

merge/patch的冲突解决

先编辑冲突,然后git commit提交。
注:对于git来讲,编辑冲突跟平时的修改代码没什么差异。修改完成后,都是要把修改添加到缓存,然后commit。
rebase的冲突解决

rebase的冲突解决过程,就是解决每个应用补丁冲突的过程。
解决完一个补丁应用的冲突后,执行下面命令标记冲突已解决(也就是把修改内容加入缓存):
git add -u
注:-u 表示把所有已track的文件的新的修改加入缓存,但不加入新的文件。

然后执行下面命令继续rebase:
git rebase --continue
有冲突继续解决,重复这这些步骤,直到rebase完成。

如果中间遇到某个补丁不需要应用,可以用下面命令忽略:
git rebase --skip

如果想回到rebase执行之前的状态,可以执行:
git rebase --abort

注:rebase之后,不需要执行commit,也不存在新的修改需要提交,都是git自动完成。
编辑冲突的方法

直接编辑冲突文件

冲突产生后,文件系统中冲突了的文件(这里是test.txt)里面的内容会显示为类似下面这样:
a123
<<<<<<< HEAD
b789
=======
b45678910
>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc
c
其中:冲突标记<<<<<<< (7个<)与=======之间的内容是我的修改,=======与>>>>>>>之间的内容是别人的修改。
此时,还没有任何其它垃圾文件产生。

最简单的编辑冲突的办法,就是直接编辑冲突了的文件(test.txt),把冲突标记删掉,把冲突解决正确。

热心网友 时间:2022-06-30 09:31

1、git merge冲突了,根据提示找到冲突的文件,解决冲突
如果文件有冲突,那么会有类似的标记
2、修改完之后,执行git add 冲突文件名
3、git commit
注意:没有-m选项
进去类似于vim的操作界面,把conflict相关的行删除掉
4、直接push就可以了,因为刚刚已经执行过相关merge操作了

热心网友 时间:2022-06-30 09:31

git的合并比较费劲,有的就需要merge,有的直接更新就行了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
阳光燕山学校是贵族学校吗 小米14ultra跌至新低 小米14ultra值得购买吗 马卡龙多少钱一个 马卡龙为什么那么贵 正宗马卡龙多少钱一个-马卡龙为什么这么贵 今年河北的迁西板栗多少钱一斤、生的 板栗什么时候上市能卖到几月呢? 6月份能买到新鲜板栗吗? 睡眠银行的生物信息专家林晨瀚讲座谁有听过,对他们的生物信息助眠方法讲 ... 材料力学实验简介 陕西高速40余辆车相撞10余车起火,有哪些道路交通受到影响? 濮阳市文鑫商砼有限公司怎么样? 濮阳市东华商砼有限公司怎么样? 包茂 高速包头延安段路通吗 git在什么情况下可能会把别人提交的代码覆盖 git 出现冲突的问题 git发生冲突怎么处理 使用git做代码管理,自己的代码被别人merge时删除了,怎么破 关于git merge的冲突的一个问题。 git merge是怎样判定冲突的 git merge是怎样判定冲突的? git merge冲突产生原因 git merge为什么会覆盖 git merger有冲突怎么办 手机丢了,注销了还能恢复聊天记录吗? 我的注销了,对方还会有我们的聊天记录吗? 注销后公安局还能查到聊天记录吗 简述甲骨帛文到竹书汉字的发展历史。 简述从甲骨文到竹帛文汉字的发展历史。 建筑装修装饰工程二级资质要求的业绩是多少啊? 濮阳市宏丰商砼有限公司怎么样? git merge conflict 怎么解决 濮阳市智兴商砼有限公司怎么样? 濮阳砼之杰商品混凝土有限公司怎么样? 包茂高速延安到西安市有没有堵车 git遇到冲突时merge_head 和 head什么区别 范县众通商砼有限公司怎么样? 台前县惠通商砼有限公司怎么样? 南乐县腾达商砼有限公司怎么样? 濮阳市海荣电力工程器材有限公司商砼分公司怎么样? 范县顺通商砼有限公司怎么样? 离职移交清单表都有什么 红米note关闭安全模式 为什么会出现心慌 心悸的症状? 心悸的时候可以做些什么缓解? 总是感觉心悸是怎么回事 运动后产生的长时间心悸怎么治 长时间的心慌心悸,会引起耳鸣耳聋嘛? 什么是心悸?是什么感觉? 频繁心悸意味着什么?