(1)应用实例描述

假设在github或者gitoschina上建立了一个项目,默认分支为master分支,远程master分支上c.sh文件内容:

开发者A、B分别将项目拷贝到自己本地进行开发

某一天,开发者B提交c.sh,并且提交成功,

之后,开发者A在本地代码并没有和远程master分支的代码同步的情况下,对本地的c.sh进行了修改,修改后c.sh内容如下:

修改后,开发者A准备将代码提交到远程master分支上。

(2)引入问题

假设开发者A提交过程如下:

$ git add c.sh

$ git commit -m “XXXX”

如果直接使用$ git push,则会报错:

error: failed to push some refs to ‘git@git.oschina.net:XXXX/gitlearning.git’

hint: Updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integrate the remote changes (e.g., ‘git pull …’) before pushing again. See the ‘Note about fast-forwards’ in ‘git push --help’ for details.

上述过程的节点走向如下图所示:

实际开发过程中考虑其它开发者可能会对c.sh进行修改,因此一般在开发过程中建议使用

$ git pull --rebase

与远程代码同步,同步过程会检查冲突,

此时,开发者根据 <<<<<<< HEAD,=======,>>>>>>> 便可知冲突的位置。

注意: 不是出现冲突才使用git pull --rebase,它是一种解决冲突的手段,另外还有merge的方式

(3) 知识点引入

$ git pull --rebase

git pull的默认行为是git fetch + git merge

git pull --rebase则是git fetch + git rebase.

$ git fetch

从远程获取最新版本到本地,不会自动合并分支

$ git rebase

git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。本地更新分支节点过程如下图所示。(关于rebase节点知识点可以参考http://blog.csdn.net/hudashi/article/details/7664631/)

$ git pull --rebase

git pull --rebase执行过程中会将本地当前分支里的每个提交(commit)取消掉,然后把将本地当前分支更新为最新的"origin"分支,该过程本地分支节点更新图如下所示:

(4)回到主题
执行完git pull --rebase之后如果有合并冲突,使用以下三种方式处理这些冲突:

git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;

git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);

git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。(fix conflicts and then run “git rebase --continue”)

对上述冲突的处理

1、使用 $git rebase --abort

执行之后,本地内容会回到提交之间的状态,也就是回到以前提交但没有pull是的状态,简单来说就是撤销rebase。

2、使用 $git rebase --skip

git rebase --skip 引起冲突的commits会被丢弃,对于本文应用的例子来说开发者A对c.sh文件的commit无效,开发者A自己修改的部分全部无效,因此,在使用skip时请慎重。

执行:$ vim c.sh

查看本地c.sh文件提交内容,展示如下图所示,执行语句之后开发者A的修改无效。

3、使用 $git rebase --continue

执行完$git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后,用"git add"命令去更新这些内容的索引(index),然后只要执行:

$ git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。
注意:一般情况下,修改后检查没问题,使用rebase continue来合并冲突。

因为开发环境有区别,同事和我安装的包也有区别,不小心把他的apache4php这个包删除了,后面线上支付出了问题,后面就有点混乱了,然后今早拉取最新代码的时候就出现如题那个错误,说我的本地和远程分叉了,我本地还比远程多4个commit,本想把远程的拉下来然后手动解决冲突的,发现一拉就报错,

$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 3 and 4 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working tree clean

根据提示说把远程拉下来和我本地合并,完全不管用。没办法,只能用远程覆盖本地的了,命令如下:

注意了,这个操作会覆盖本地的修改,因此建议手动备份!一定要备份!可以查看一下本地和远程现在有区别的有哪些文件,针对性的备份。

git fetch origin
git reset --hard origin/master
 ————————————————

git的冲突解决–git rebase之abort、continue、skip相关推荐

  1. git am 冲突解决

    git am 冲突解决技巧 使用git am合patch的时候可能有冲突出现,这个时候,手动解决的办法是看看冲突在哪里, 然后手动的把那个patch和入.手动合入需要的时间太长. 我们可以用git a ...

  2. git am 冲突解决技巧

    git am 冲突解决技巧 使用git am合patch的时候可能有冲突出现,这个时候,手动解决的办法是看看冲突在哪里, 然后手动的把那个patch和入.手动合入需要的时间太长. 我们可以用git a ...

  3. git合并冲突解决方法

    git合并冲突解决方法 1.git merge冲突了,根据提示找到冲突的文件,解决冲突 如果文件有冲突,那么会有类似的标记 2.修改完之后,执行git add 冲突文件名 3.git commit 注 ...

  4. git am冲突解决办法

    0. 前言 我们在合并patch的时候,希望将patch 作者的基本信息也一并合并,这样就需要git am命令,但是在git am 合并的时候会出现冲突,如何快速有效的解决呢?本文基于git am 命 ...

  5. Git stash及解决Git stash冲突问题

    Git stash 适应场景: 使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的 ...

  6. 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题

    1新建一个存储git的文件夹,命令是: toto@toto-K45VD:~$ mkdir gitfolder 2初始化一个git仓库,命令是: toto@toto-K45VD:~$cd gitfold ...

  7. git pull冲突解决

    阅读步骤: 1.git stash方法:解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题 - 码上快乐 2.git stash pop 解决冲突:[Git]执行git sta ...

  8. 配置Beyond Compare 4作为git mergetool来解决git merge命令导致的文件冲突

    文章目录 前言 解决方案 前提 配置 Beyond Compare 文件冲突及处理 产生冲突 解决冲突 工具配置的参数含义 git config git mergetool 思考 总结 前言 使用 g ...

  9. [Git] git pull冲突和git stash pop冲突解决

    一.git pull 冲突 代码仓有人提交了新代码,而我本地也修改了代码,想要pull一下,却发现: error: Your local changes to the following files ...

最新文章

  1. java连接mongodb_java连接mongodb源码解读
  2. Kali Linux重设root密码
  3. 江苏大学计算机专业江苏排名,2018江苏大学专业排名及分数线 王牌专业有哪些...
  4. spring基于注释的配置_基于注释的Spring MVC Web应用程序入门
  5. 在Silverlight 2应用程序中集成Virtual Earth
  6. 用matlab求解信号的DFT,利用MATLAB实现信号DFT的计算
  7. Ubuntu环境搭建二:搭建samba服务器
  8. 使用Oracle SQL Developer 编写运行 PL/SQL 块
  9. azure云数据库_Azure SQL数据库中的漏洞评估和高级威胁防护
  10. neo4j安装与示例
  11. xp计算机考试资源管理,职称计算机WindowsXP必备考点:资源管理器
  12. 800元以内创建的双路CPU主机
  13. 【服务器配置】php move_uploaded_file文件移动失败
  14. 5分绩点转4分_泪目!老詹儿子凌晨5点起身训练,科比女儿4点,魔术师叹息退出群聊...
  15. C++ vector 和push_back 详解
  16. 台式机通过网线共享笔记本电脑无线网络
  17. 机器视觉(四)——打光
  18. vue移动端点击事件延迟_如何解决移动端Click事件300ms延迟的问题?
  19. 计算机教室突发事件处理,课堂突发事件处理
  20. ADB 最常用命令集合及各种问题解决方式

热门文章

  1. python wraps_python装饰器中的@wraps
  2. 微型小说:他发现女友劈腿
  3. Crescendo for Mac(音乐记谱软件)
  4. linux c 与时间有关的time函数
  5. 一个准大龄女程序员的婚姻线
  6. 【巨人的肩膀】MySQL面试总结(一)
  7. Android-Universal-Image-Loader源码知识笔记
  8. vfp的一款图片处理库,简洁好用,免费不收钱,值得推荐
  9. win7电脑一开机就蓝屏怎么回事?常见蓝屏代码
  10. 【免费指南】如何应对2022年Windows DCOM安全更新?