[置顶] 【Git入门之九】解决冲突
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309531
1.多人协作冲突
如果多人同时修改了同一个文件,那会出现什么样的结果呢?我们试着这么做。
(1)修改jackygit2
在jackygit2中修改jackydata01,提交修改并推送到远程仓库(这里使用本地远程仓库)。正常,没问题。
- #切换到jackygit2本地库,这是远程仓库那节建立的,从本地远程仓库克隆而来
- $ cd ../jackygit2
- #修改jackygit2/Jackydata01
- $ echo "It's modified in jackygit2" > jackydata01
- #提交jackygit2的修改
- $ git commit -a -m "jackygit2 modify"
- [master 15a6406] jackygit2 modify
- 1 file changed, 1 insertion(+), 1 deletion(-)
- #推送到远程仓库origin
- $ git push origin
- Counting objects: 5, done.
- Delta compression using up to 2 threads.
- Compressing objects: 100% (2/2), done.
- Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
- Total 3 (delta 1), reused 0 (delta 0)
- To d:/jackygit2/../remote-jackygit.git
- c0449de..15a6406 master -> master
(2)修改jackygit
切换到jackygit仓库,同样修改jackydata01,提交修改并推送到远程仓库。这时候就出错了,提示有人改过这个文件了。推送不成功。
- #切换到jackygit
- $ cd ../jackygit
- #修改jackygit/Jackydata01
- $ echo "It's modified in jackygit" >jackydata01
- #提交jackygit的修改
- $ git commit -a -m "jackygit modify"
- [master 9ab7206] jackygit modify
- 1 file changed, 1 insertion(+), 1 deletion(-)
- 推送到远程仓库testremote,这个仓库和上面的origin是同一个远程仓库
- $ git push testremote
- To ../remote-jackygit.git
- ! [rejected] master -> master (fetch first)
- error: failed to push some refs to '../remote-jackygit.git'
- hint: Updates were rejected because the remote contains work that you do
- hint: not have locally. This is usually caused by another repository pushing
- hint: to the same ref. You may want to first integrate the remote changes
- hint: (e.g., 'git pull ...') before pushing again.
- hint: See the 'Note about fast-forwards' in 'git push --help' for details.
(3)抓取远程仓库内容
抓取远程仓库中的文件,这里需要指定分支。
- #抓取远程仓库中的文件,需要指定分支
- $ git pull testremote master
- From ../remote-jackygit
- * branch master -> FETCH_HEAD
- Auto-merging Jackydata01
- CONFLICT (content): Merge conflict in Jackydata01
- Automatic merge failed; fix conflicts and then commit the result.
(4)查看冲突文件内容
冲突用<<<<<< ====== >>>>>>隔开冲突代码,上面的是当前修改内容,下面的则是别人修改的内容。
- #输出当前jackydata01内容
- $ cat jackydata01
- <<<<<<< HEAD
- It's modified in jackygit
- =======
- It's modified in jackygit2
- >>>>>>> 15a6406ed7f889bab7e812f9e6bedb6e78431232
(5)解决冲突
修改冲突内容,重新提交,推送。
- #修改Jackydata01产生的冲突
- $ echo "there is no conflict now" > jackydata01
- #提交修改冲突后文件
- $ git commit -a -m "there is no confilct now"
- [master ac2846f] there is no confilct now
- #推送到远程仓库testremote
- $ git push testremote
- Counting objects: 10, done.
- Delta compression using up to 2 threads.
- Compressing objects: 100% (4/4), done.
- Writing objects: 100% (6/6), 567 bytes | 0 bytes/s, done.
- Total 6 (delta 2), reused 0 (delta 0)
- To ../remote-jackygit.git
- 15a6406..ac2846f master -> master
2.分支合并冲突
这种情况和多人协作冲突处理办法是相似的。在这里也模拟一下。
(1)创建分支并修改内容
- #创建并跳转到分支br
- $ git checkout -b br
- Switched to a new branch 'br'
- #修改br分支中的Jackydata01
- $ echo "It's modified in br" > jackydata01
- #提交br分支中的修改
- $ git commit -a -m "br modify"
- [br 32c8755] br modify
- 1 file changed, 1 insertion(+), 1 deletion(-)
(2)跳转到主分支,同样进行内容修改
- #跳转到master分支
- $ git checkout master
- Switched to branch 'master'
- #修改master分支中的jackydata01
- $ echo "It's modified in master" > jackydata01
- #提交master分支中的修改
- $ git commit -a -m "master modify"
- [master ed84e67] master modify
- 1 file changed, 1 insertion(+), 1 deletion(-)
(3)合并分支
- #合并br到主分支上
- $ git merge br
- Auto-merging Jackydata01
- CONFLICT (content): Merge conflict in Jackydata01
- Automatic merge failed; fix conflicts and then commit the result.
(4)显示冲突文件内容,冲突隔开方式如上所述
- #显示br中Jackydata01内容
- $ cat jackydata01
- <<<<<<< HEAD
- It's modified in master
- =======
- It's modified in br
- >>>>>>> br
(5)解决冲突,重新提交
- 修改Jackydata01产生的冲突
- $ echo "It's no conflict now" > jackydata01
- #提交修改冲突后文件
- $ git commit -a -m "It's no conflict now"
- [master eb073a6] It's no conflict now
(6)删除无效分支
- #删除br分支
- $ git branch -d br
- Deleted branch br (was 32c8755).
[置顶] 【Git入门之九】解决冲突的更多相关文章
- Git命令行下解决冲突
使用Git时,在pull.merge.rebase的过程中,经常会遇到conflict的情况. 遇到conflict时,以上处理过程会终端,并且命令行中显示(xxx|MERGING)的状态(Windo ...
- git分支管理之解决冲突
人生不如意之事十之八九,合并分支往往也不是一帆风顺的. 准备新的feature1分支,继续我们的新分支开发: $ git checkout -b feature1 Switched to a new ...
- git合并分支与解决冲突
前提: 当前开发的分支为feature/20161129_317606_algoplatform_1,由于feature/20161130_322574_tmstools_1分支有新内容,所以准备将f ...
- [置顶]
Git学习总结(1)——Git使用详细教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- Git应用之eclipse解决冲突代码
最近上班公司框架换成了微服务下面是eclipse 对代码进行管理 1.冲突代码 如果两个人在一个项目上同一文件上更改代码就会出现冲突现象 先用NewFile.jsp 文件做演示 打开eclipse从 ...
- git cherry-pick 命令,解决冲突后没有 commit 变更,再次pull 时出错
Git : You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists). 解决方法:(1)使用git status 命令查看当前 ...
- [置顶] JUnit入门教程(二)
一:介绍 接着上次的课程,今天我们学习JUnit4的新特性 assertThat()方法,这种方式和其余的assert方法比起来,更加接进英语. 二:分析API API中的例子: 参数 T Actua ...
- [置顶]
Git 配置SSH简单玩法?
> 第一步下载git点击直接下载 他会检测您的系统当前是64bit还是32bit安装过程不再啰嗦反正就是Next Next Next Finish 第二步这里你可以下载TortoiseGit点击 ...
- Git入门指南九:远程仓库的使用【转】
转自:http://blog.csdn.net/wirelessqa/article/details/20152651 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 十三 ...
随机推荐
- “死锁” 与 python多线程之threading模块下的锁机制
一:死锁 在死锁之前需要先了解的概念是“可抢占资源”与“不可抢占资源”[此处的资源可以是硬件设备也可以是一组信息],因为死锁是与不可抢占资源有关的. 可抢占资源:可以从拥有他的进程中抢占而不会发生副作 ...
- Android系统下的动态Dex加载与app速度优化
1 问题 在Android系统中,一个App的所有代码都在一个Dex文件里面.Dex是一个类似Jar的存储了多有Java编译字节码的归档文件.因为Android系统使用Dalvik虚拟机,所以需要把 ...
- oracle死锁模拟
环境介绍: 用户test01 创建表tab01,用户test02创建表tab02.Test01 更新tab01不提交,test02 更新表tab02不提交.然后test01 更新test02下的表ta ...
- 判断iPhone和iPad 判断设备版本
//判断iPhone和iPad #define IS_IPHONE (!IS_IPAD) #define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInt ...
- ASP.NET菜鸟之路之Seesion小例子
背景 我是一个ASP.NET菜鸟,暂时开始学习ASP.NET,在此记录下我个人敲的代码,没有多少参考价值,请看到的盆友们为我点个赞支持我一下,多谢了. Session介绍 Session保存特定用户相 ...
- java_annotation_01
一,Annotation简介 J2SE5.0提供了很多新的我,其中一个很重要的我就是对元数据的支持,在J2SE5.0中,这种元数据被称为注释,通过使用注释,程序开发人员可以在不改变原有逻辑的情况下,在 ...
- css margin collapse
css中存在margin collapse,即边界塌陷或边界重叠. http://www.w3cplus.com/css/understanding-bfc-and-margin-collapse.h ...
- jQuery 如何创建基本插件(翻译)
有时候,你希望有一块功能在整个代码当中都可以使用.例如,你可能想要有一个单一的方法可以在jQuery选择器上进行调用,用于处理该选择器上的一系列操作.又或许你编写了一个十分有用的工具函数,并希望能够简 ...
- 离线安装maven,重新打开eclipse报错处理方法
报错截图如下 1.eclipse 添加 jre Window -> Preferences -> Java -> Installed JREs If you can’t find a ...
- Boost使用笔记(Smart_ptr)
我是Word写的,复制过来实在懒得在排版了,有兴趣的朋友可以去我的百度文库看,谢谢 http://wenku.baidu.com/view/34e485e2f61fb7360b4c653e.html ...