同一个项目下有多个分支,需要把分支devolp分支合并到master上,
进入master分支中,输入命令 git merge devolp
一. 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可查看暂存区文件。
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/luoww1/article/details/80855873
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
-
发表于 2020-03-06 23:15:10
- 阅读 ( 1977 )
- 分类: