使用下面的关系区别这两个操作:
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase

现在来看看git merge和git rebase的区别。

假设有3次提交A,B,C。

在远程分支origin的基础上创建一个名为"mywork"的分支并提交了,同时有其他人在"origin"上做了一些修改并提交了。

其实这个时候E不应该提交,因为提交后会发生冲突。如何解决这些冲突呢?有以下两种方法:

1、git merge
用git pull命令把"origin"分支上的修改pull下来与本地提交合并(merge)成版本M,但这样会形成图中的菱形,让人很困惑。

2、git rebase
创建一个新的提交R,R的文件内容和上面M的一样,但我们将E提交废除,当它不存在(图中用虚线表示)。由于这种删除,小李不应该push其他的repository.rebase的好处是避免了菱形的产生,保持提交曲线为直线,让大家易于理解。

在rebase的过程中,有时也会有conflict,这时Git会停止rebase并让用户去解决冲突,解决完冲突后,用git add命令去更新这些内容,然后不用执行git-commit,直接执行git rebase --continue,这样git会继续apply余下的补丁。
在任何时候,都可以用git rebase --abort参数来终止rebase的行动,并且mywork分支会回到rebase开始前的状态。

最新文章

  1. java IO之AutoCloseable,Closeable和Flushable接口
  2. TextBox自定义控件
  3. iOS开发多线程篇—GCD的常见用法
  4. highcharts相关属性
  5. SQL-表链接
  6. InnoSetup打包exe安装应用程序,并添加卸载图标 转
  7. Ajax的常用框架有哪些?
  8. IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别(附代码)
  9. [转] 怎样在Ubuntu 14.04中搭建gitolite git服务器
  10. asp.net mvc ajax提交例子
  11. new和newInstance区别
  12. ASP.NET MVC 分页问题
  13. linux系统版本查看
  14. mysql优化 | 存储引擎,建表,索引,sql的优化建议
  15. PostgreSQL学习笔记(一)-安装PostgreSQL
  16. UOJ188 Sanrd Min_25筛
  17. Docker 安装应用
  18. 实验十五 GUI编程练习与应用程序部署
  19. django配置一个网站建设
  20. 安装office自定义项,安装期间出错

热门文章

  1. 使用反射动态调用ActiveX控件
  2. 使用Roslyn脚本化C#代码,C#动态脚本实现方案
  3. Golang 入门 : 字符串
  4. 爬虫基础(三)-----selenium模块应用程序
  5. OracleSql语句学习(二)
  6. offsetof(s,m)解析
  7. Ubuntu 系统安装详解 19.04最新版本
  8. flask 实现登录 登出 检查登录状态 的两种方法的总结
  9. 数据降维之多维缩放MDS(Multiple Dimensional Scaling)
  10. 关于计时器的js函数