git的冲突解决_第1页
git的冲突解决_第2页
git的冲突解决_第3页
git的冲突解决_第4页
git的冲突解决_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、git 的冲突解决冲突的产生很多命令都可能出现冲突, 但从根本上来讲, 都是 merge 和 patch (应用补丁)时产生冲突。而 rebase 就是重新设置基准,然后应用补丁的过程,所以也 会冲突。git pull 会自动 merge, repo sync会自动 rebase, 所以 git pull 和 repo sync 也会产生冲突。当然 git rebase 就更不用说了。 冲突的类型逻辑冲突git 自动处理(合并 /应用补丁)成功,但是逻辑上是有问题 的。比如另外一个人修改了文件名,但我还使用老的文件名,这 种情况下自动处理是能成功的,但实际上是有问题的。又比如,函数返回值含义变

2、化,但我还使用老的含义,这种 情况自动处理成功, 但可能隐藏着重大 BUG 。这种问题, 主 要通过自动化测试来保障。所以最好是能够写出比较完备的 自动化测试用例。这种冲突的解决,就是做一次 BUG 修正。不是真正解决 git 报告的冲突。内容冲突 两个用户修改了同一个文件的同一块区域, git 会报告内容冲 突。我们常见的都是这种,后面的解决办法也主要针对这种 冲突。树冲突 文件名修改造成的冲突,称为树冲突。比如,a用户把文件改名为 a.c, b用户把同一个文件改名为 b.c,那么b将这两个commit合并时,会产生冲突。$ git statusadded by us: b.cboth de

3、leted: origin-name.cadded by them: a.c如果最终确定用b.c,那么解决办法如下:git rm a.cgit rm origin-name.cgit add b.cgit commit执行前面两个 git rm 时,会告警“ file-name : needs merge”, 可以不必理会。树冲突也可以用 git mergetool 来解决,但整个解决过程是在 交互式问答中完成的,用 d 删除不要的文件,用 c 保留需要 的文件。最后执行 git commit 提交即可。内容冲突的解决办法发现冲一般来讲,出现冲突时都会有“ CONFLICT ”字样:$ git

4、 pullAuto-merging test.txtCONFLICT (content): Merge conflict in test.txtAutomatic merge failed; fix conflicts and then commit the result.但是,也有例外, repo sync 的报错,可能并不是直接提示冲 突,而是下面这样:error: project mini/sample 注:无论是否存在冲突,只要本地修改不是基于服务器最新 的,它都可能报告这个错误,解决方法都是一样。这个时候,需要进入报错的项目( git 库)目录,然后执行 git rebase 解决:

5、git rebase remote-branch-name 冲突解决的一般过程 merge/patch 的冲突解决先编辑冲突,然后 git commit 提交。注:对于 git 来讲,编辑冲突跟平时的修改代码没什么差异。修改完成后,都是要把修改添加到缓存,然后commit。rebase的冲突解决rebase的冲突解决过程,就是解决每个应用补丁冲突的过程。 解决完一个补丁应用的冲突后,执行下面命令标记冲突已解 决(也就是把修改内容加入缓存) :git add -u注: -u 表示把所有已 track 的文件的新的修改加入缓存,但 不加入新的文件。然后执行下面命令继续rebase:git reba

6、se -continue有冲突继续解决,重复这这些步骤,直到 rebase完成。如果中间遇到某个补丁不需要应用,可以用下面命令忽略:git rebase -skip如果想回到rebase执行之前的状态,可以执行:git rebase -abort注:rebase之后,不需要执行 commit,也不存在新的修改需 要提交,都是 git 自动完成。编辑冲突的方法直接编辑冲突 文件冲突产生后,文件系统中冲突了的文件(这里是test.txt )里面的内容会显示为类似下面这样:a123<<<<< HEADb789 b45678910>>>>>>6853e5ff961e684d3a6c02d4d06183b5ff330dccc其中:冲突标记 >>>>>> 之间的内容是别人 的修改。此时,还没有任何其它垃圾文件产生。最简单的编辑冲突的办法,就是直接编辑冲突了的文件(test.txt),把冲突标记删掉,把冲突解决正确。利用图形界 面工具解决冲突如果要解决的冲突很多,且比较复杂,图形界面的冲突解决 工具就显得很重要了。执行 git mergetool 用预先配置的 Beyond Com

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论