Git使用之——冲突解决一(git merge conflict)
来源:互联网 发布:midi键盘软件 编辑:程序博客网 时间:2024/05/23 18:39
Git冲突是在多用户协同工作下出现,在一些情况下Git可以智能自动合并,但有时需要用户手动合并。
(本文链接:http://blog.csdn.net/u012150179/article/details/14047183)
一. Git智能自动合并
1. 多成员修改不同文件
这和之前所述的“非快进式推送”一致,按照其方式解决(http://blog.csdn.net/u012150179/article/details/36044515)。2. 多成员修改相同文件不同区域
3. 同时修改文件名和文件内容
解决:
上述三种方式都可以用同一中方式解决,也就是在执行push之前先进行pull操作,即git pull
这里
git pull = git fetch + git merge refs/remotes/origin/master
二. 用户手动合并
1. 文件合并(修改同一文件的同一区域)
现在模拟这种情况的发生。(注:我这里是首先搭建了一个Git 服务器,搭建方法可见http://blog.csdn.net/u012150179/article/details/17029731)这里新建了从share版本库clone内容的两个用户user1和user2。并同时修改文件conflict_test文件的第二行,在user1执行push后,user2执行push会发生如下情形:图1
在log信息中提示使用git pull,那尝试git pull,出现一下结果:
图2
得到的信息是:“自动merge失败,需要修复conflict后才能commit。”也就是此时已经出现了在上面“Git智能自动合并”的情形之外的情况,现在Git已经不能执行自动合并,此时需要用户手动合并解决问题。
可以查看版本库状态:
图3
问题解决方法:
这里比较好的方式是借助mergetool,输入git mergetool
得到
图4,回车
出现kdiff3图形界面,其中A区为修改前,B区为本地(local)版本库修改,C区为远程版本库(remote)信息,在最下方点击右键选择需要使用的版本库,修改后保存退出即可。
这里就完成了conflict的手动合并。
之后:
git commit –m “”
git push origin master
即可。查看提交日志:
图5
可以发现最新提交是前两次提交的合并。
2. 树合并(不同成员对同一文件重命名)
关于树冲突,出现的原因是因为同时对一个文件进行了重命名。也可以使用mergetool修复冲突,但是更直接的方法是直接使用git rm删除想删除的文件,使用git add将需要的文件加到暂存区进而commit。在文件合并和树合并中还有一个很有用的命令是:
git ls-files –s
可查看暂存区文件。
其它具有参考性文章:
http://yodalee.blogspot.com/2013/03/vimdiffgit-merge-conflict_28.html
http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html
- Git使用之——冲突解决一(git merge conflict)
- Git使用之——冲突解决一(git merge conflict)
- git基础学习之——解决merge冲突
- 【转】解决 Git 的 Merge Conflict
- git学习之旅(三)——合并冲突(conflict)
- git 解决主库冲突conflict
- 解決git merge conflict
- git merge conflict 参考
- git解决冲突与merge
- 168 git merge冲突解决
- git Merge 冲突解决---流程
- Eclipse+git中merge代码时出现conflict(冲突)的问题解决方案
- git---分支合并冲突处理(conflict)
- 高效使用vimdiff解决git merge冲突(英文版)
- 高效使用vimdiff解决git merge冲突(英文版)
- 高效使用vimdiff解决git merge冲突(英文版)
- Git技巧之解决git merge的合并冲突(非树冲突)
- git之解决冲突
- 判断二叉树是否平衡二叉树
- 第十周上机实践-----1!+2!+3!++++++++20!
- 详解Java反射机制实例
- 嵌入系统中标准输入输出扩展
- 调度器中如何使用短信推送功能
- Git使用之——冲突解决一(git merge conflict)
- php 常用自定义方法
- cocos2d-x帧动画 -- 角色跑动
- HDU 1013 Digital Roots
- FutureTask一例
- 抽象类小结
- 指针的魅力
- 题目1000:计算a+b
- android之SlidingMenu滑动菜单栏使用介绍