原文:http://www.cnblogs.com/kevingrace/p/5896706.html

使用下面的关系区别这两个操作:
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. hdu 1047 (big integer sum, fgets or scanf, make you func return useful infos) 分类: hdoj 2015-06-18 08:21 39人阅读 评论(0) 收藏
  2. 初识50个Linux命令
  3. CUDA中的Toolkit
  4. gsp序列模式挖掘
  5. (转+整理) oracle authid definer 与 authid current_user
  6. 初次运行 Git 前的配置
  7. python关键字、转义符和字符串格式化
  8. $http post传值的问题
  9. 从字节理解Unicode(UTF8/UTF16)
  10. BZOJ 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典
  11. select、poll、epoll之间的区别总结[转载]
  12. linux中$#,$0,$1,$2,$@,$*,$$,$?的含义
  13. 基于 HTML5 的工业组态高炉炼铁 3D 大屏可视化
  14. FC游戏 《三国志2-霸王的大陆》攻略
  15. IDEA artifacts Web Application:Exploded Web Application:Archive
  16. noip第8课作业
  17. Tomcat与Gzip与缓存
  18. codevs 5294 挖地雷
  19. PowerDesigner概念设计模型(CDM)中的3种实体关系
  20. Nginx、Apache工作原理及Nginx为何比Apache高效

热门文章

  1. hydra nodejs 微服务框架简单试用
  2. 【python】Beautiful Soup的使用
  3. 转:HL7 Tools suite
  4. WinForm 弹窗
  5. Hibernate SQL 查询
  6. bzoj4331: JSOI2012 越狱老虎桥
  7. MAMP pro mac 本地集成环境 php sal apache等集成软件
  8. 在eclipse中使用mybatis-generator自动创建代码
  9. flask 蓝图
  10. 2017 年 PHP 程序员未来路在何方?