一、git pull与git fetch区别

1、两者的区别

      两者都是更新远程仓库代码到本地。

  git fetch相当于是从远程获取最新版本到本地,不会自动merge。
只是将远程仓库最新commitid记录更新到本地remote中对应的远程分支,而本地head不更新,仍然保持本地的commitid。

  git pull相当于是从远程获取最新版本代码并自动merge。
只是将远程仓库最新commitid记录更新到本地remote中,同时本地head也更新到远程拉取下来的commitid记录。

2、两者的使用

      更新代码一般人都推荐git fetch,之后再自行手动合并,但是麻烦,协作开发,因为代码更新是经常性的

git pull自动合并隐藏过程细节,方便快捷,但是有冲突就麻烦了,不容易对比差异化代码。幸运的是,日常开发中我们解决冲突一般借助于IDE提供的插件,可以很好地对比版本差异,快速解决冲突,所以个人更喜欢用git pull。

二、git merge与git rebase的区别

1、两者的区别

      两者都是将公共分支(master)合并到当前分支(feature)。

  git merge 的合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将公共分支(master)和
当前分支(feature)的最新一次commit点合并在一起,形成一个新的commit,最终的分支树呈现非整条线性直线的形式。

  git rebase操作实际上是将当前分支(feature)的所有commit点取消,保存成一个一个的临时patch(保存在".git/rebase"目录中),
然后把当前分支(feature)更新到最新的原分支(master),最后把这些保存的临时patch文件,应用到当前分支(feature)上,
并把这些patch重新生成一个个对应新的commit hash值,不会形成新的commit点,可以保持整个分支树的完美线性。



      下面的更直观:

2、两者的使用

      git merge适合公共分支,将其他分支合并到公共分支,merge操作两个分支最新的提交点会形成新的一个提交点,使后合并进来的commit记录仍然保持在后边。

git rebase适合个人分支(只自己一个人提交)。日常开发过程中,个人分支代码需要和公共分支代码保持一致最新,定期合并公共分支代码到个人分支。个人分支一般是处于开发阶段,只有个人提交,执行rebase操作后,从公共分支上合并别人新的commit在我们的commit之前。

  公共分支:master、develop、和其他人共同使用的feature,统称为公共分支。
个人分支:只有自己一个人开发提交代码,不存在第二个人提交,统称为个人分支

三、git pull与git pull --rebase区别

  git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase

转自:[1]git pull与git fetch及git merge与git rebase的区别

          [2]git在工作中正确的使用方式----git rebase篇

git pull、git fetch、git merge、git rebase的区别的更多相关文章

  1. Git中pull对比fetch和merge

    本文参考于:http://www.zhanglian2010.cn/2014/07/git-pull-vs-fetch-and-merge/ 使用git fetch和git pull都可以更新远程仓库 ...

  2. [git]merge和rebase的区别

    前言 我从用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些资料,总结了下面的内容,如果有什么不妥的地方,还望指正,我一定虚心学习. merge和rebase ...

  3. git pull fatal: refusing to merge unrelated histories

    1.首先我github有个远程仓库,然后我本地有个仓库 本地仓库我新添加了一个文件,然后我去关联(git remote add origin git@github.com:qshilary/gitte ...

  4. [Git] git merge和rebase的区别

    git merge 会生成一个新得合并节点,而rebase不会 比如: D---E test / A---B---C---F master 使用merge合并, 为分支合并自动识别出最佳的同源合并点: ...

  5. git之merge和rebase的区别

    merge合并 # merge操作 第一步: # 先创建一个目录,在主分支提交3个txt文件 [root@luchuangao]# mkdir oldboy [root@luchuangao]# gi ...

  6. merge和rebase的区别

    前言 我从用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些资料,总结了下面的内容,如果有什么不妥的地方,还望指正,我一定虚心学习. merge和rebase ...

  7. git 的 pull、fetch、merge

    1.pull = fetch + merge In the simplest terms, git pull does a git fetch followed by a git merge. You ...

  8. Git 少用 Pull 多用 Fetch 和 Merge

    本文有点长而且有点乱,但就像Mark Twain Blaise Pascal的笑话里说的那样:我没有时间让它更短些.在Git的邮件列表里有很多关于本文的讨论,我会尽量把其中相关的观点列在下面. 我最常 ...

  9. 【转】Git 少用 Pull 多用 Fetch 和 Merge

    原文网址:http://www.cnblogs.com/flying_bat/p/3408634.html 本文有点长而且有点乱,但就像Mark Twain Blaise Pascal的笑话里说的那样 ...

  10. Git 少用 Pull 多用 Fetch 和 Merge(转)

    英文原文:git: fetch and merge, don’t pull This is too long and rambling, but to steal a joke from Mark T ...

随机推荐

  1. k8s入坑之路(7)kubernetes设计精髓List/Watch机制和Informer模块详解

    1.list-watch是什么 List-watch 是 K8S 统一的异步消息处理机制,保证了消息的实时性,可靠性,顺序性,性能等等,为声明式风格的API 奠定了良好的基础,它是优雅的通信方式,是 ...

  2. Navicat for MySQL 批量执行多个 SQL 文件

    文件合并 type *.sql >> aaa.sql 执行sql文件 右键点击数据库

  3. NCF 中如何将Function升级到FunctionRender

    简介 历史的车轮在不断的向前推进,NCF也在不断的迭代更新,只为成为更好的NCF 如果你之前没有用过NCF可以跳过这个文档,直接去下载最新的NCF源码进行实践. NCF仓库地址:https://git ...

  4. 无法复现的“慢”SQL《死磕MySQL系列 八》

    系列文章 四.S 锁与 X 锁的爱恨情仇<死磕MySQL系列 四> 五.如何选择普通索引和唯一索引<死磕MySQL系列 五> 六.五分钟,让你明白MySQL是怎么选择索引< ...

  5. 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)

    [JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...

  6. part 36 AngularJS route reload

    In this video we will discuss angular route service reload() method. This method is useful when you ...

  7. 如何用命令行编译c++程序

    作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话.虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在.从客观的角度来讲,一方面, ...

  8. More Effective C++笔记(二)

    三.异常 条款9:利用destructor避免泄露资源 把资源封装在对象内,通常可以在exception出现时避免资源泄露 条款10:在构造函数内阻止资源泄露 C++仅仅能删除被完全构造的对象(ful ...

  9. Python基础(定制类)

    文章转载自廖雪峰老师Python课程博客,仅供学习参考使用看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道 ...

  10. 菜鸡的Java笔记 第九 - java 接收键盘输入

    package mysterious; import java.util.Scanner; public class lianxi { public static void hhh (){ Scann ...