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

git merger有冲突怎么办

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

我来回答

1个回答

热心网友 时间:2022-05-06 13:19

冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是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),把冲突标记删掉,把冲突解决正确。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
微信里头怎样才能用哈语打字 QQ音乐每月听歌报告怎么看 每月听歌报告查看方法介绍 “却”字造句怎么写【优选51句】 微商业绩一年500万,怎么估值? 如何养殖小叶紫檀 钨铜刨花哪家好 求男主对女主一见钟情的小说 无虐 宠文甜文一对一 双C 类似于真婚厚爱... 金毛可以吃煮过的生蚝吗 有什么制作酥蜜粥的小妙招? 伏特加和其他酒类的口感有什么区别? 手机丢了,注销了还能恢复聊天记录吗? 我的注销了,对方还会有我们的聊天记录吗? 注销后公安局还能查到聊天记录吗 简述甲骨帛文到竹书汉字的发展历史。 简述从甲骨文到竹帛文汉字的发展历史。 建筑装修装饰工程二级资质要求的业绩是多少啊? 注销后之前的聊天记录还在吗? 竹偏旁是由哪个汉字演变来的 工程资料员一直拖延不完成资料组卷,有什么处罚 现在天气冷了 我今天随便摸 了一双鞋子暴露脚趾头穿 的 怎么办 我一下去肯定好多人笑我 资料员的工作需要跟到项目走吗? (通信建设工程概预算人员资格申请表)其中里边的个人业绩怎么填写,请帮帮忙谢谢了 更改图纸的资料员工作业绩怎么写 请问怎样写主要业绩?建筑资料员、送样员应聘~好的加分!!!加分!!! 招投标中资料员私自修改业绩 成都海洋馆有哪些东西 家里电脑中病毒了 ,杀毒软件打不开! 怎么办 ? 我最喜欢收集了,海底世界有哪些收集物品可以收集? 如何让话费和流量分开充值 怎样用话费充值流量? git merge为什么会覆盖 git merge冲突产生原因 git merge是怎样判定冲突的? git merge是怎样判定冲突的 关于git merge的冲突的一个问题。 使用git做代码管理,自己的代码被别人merge时删除了,怎么破 git发生冲突怎么处理 git 出现冲突的问题 git在什么情况下可能会把别人提交的代码覆盖 包茂 高速包头延安段路通吗 濮阳市东华商砼有限公司怎么样? 濮阳市文鑫商砼有限公司怎么样? 陕西高速40余辆车相撞10余车起火,有哪些道路交通受到影响? git 的gui 合并产生冲突怎么解决 濮阳市宏丰商砼有限公司怎么样? git merge conflict 怎么解决 濮阳市智兴商砼有限公司怎么样? 濮阳砼之杰商品混凝土有限公司怎么样? 包茂高速延安到西安市有没有堵车 git遇到冲突时merge_head 和 head什么区别