文章目录

  • 前提知识
  • 区别git pull 与 git pull --rebase
    • 简单理解
    • git merge与git rebase

git pullgit pull --rebase 命令都是从远端拉取代码,更新我们的仓库。

前提知识

四个区:

  • 工作区 :代码在本地存储的目录位置
  • 暂存区 :git可以追踪的代码(工作区可以将代码添加到暂存区(add))——临时存储
  • 本地库 :暂存区的代码可以提交到本地库(commit),并生成对应的版本 ——生成历史版本
  • 远程库:(远程库:如github)本地区的代码可以提交到远程库(push),并生成对应的版本 ——存储在远端

区别git pull 与 git pull --rebase

简单理解

git pullgit pull --merge的简写。
git pullgit pull --rebase 的关系如下:

git pull = git fetch + git merge
git pull --rebase =  git fetch + git rebase
  • git fetch是将远程库的最新内容拉到本地库,用户在检查了以后决定是否合并到工作区中。
  • git merge是将本地的两个分支合并,如果在分支A中执行git merge B,那就是将分支B中的代码合并到分支A中。
  • git pull 则是将远程主机的最新内容拉去到本地库后直接合并到工作区中,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
    图示表示:
  • git rebase是将提交到某一分支上的所有修改都移至另一分支上。即如果在B分支上使用git rebase A就是将B分支上的修改都变基(移到)A分支上
    详见:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA
  • git pull --rebase则是将远程主机的最新内容拉去到本地库后直接变基到工作区中,即:git pull --rebase = git fetch + git rebase,可能会产生冲突手动解决。
    图示表示:

git merge与git rebase

通过上面的比较,git pull 与 git pull --rebase的区分实际上就是git merge与git rebase的区分。为了方便区分我们使用两个不同名分支进行讲解。

  • git merge是合并分支。是将yang分支合并到master分支之后,master分支的代码有所改动,会自动commit,生成一个新的结点,并且不会影响之前两分支的提交节点。
    合并前:

合并后:

执行的合并命令:

$ git checkout master
$ git merge yang
  • git rebase是变基。是将yang分支变基到master分支,就是将yang分支的代码改动完全合并到master分支,不会生成新的结点。
    变基前:

    变基后:


执行的变基命令:

$ git checkout yang
$ git rebase master

然后再执行如下命令,是master分支指向最新节点

$ git checkout master
$ git merge yang


由此可以看出merge和rebase的区别:

  • merge 会多出一次 commit生成一个新节点,rebase不会。
  • merge 的提交树是非线性的,rebase 的提交树是线性的(通过重写提交历史)。

git pull 与 git pull --rebase相关推荐

  1. 【Git】git pull和git pull --rebase的使用

    git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebas ...

  2. git pull和git pull -- rebase

    在开始对比这两条命令之前,请大家思考三个问题: 1 工作区不干净(没有git add .)可以git pull或者git pull - -rebase代码吗? 结果是不可以,如果你没有将修改提交到暂存 ...

  3. git fetch 与 git pull

    文章目录 git flow 流程 git fetch 与 git pull 区别 git fetch 工作流程 git flow 流程 先来看一张图吧: 大致流程是这样的:我们在本地(工作区)编写好代 ...

  4. git pull和git pull origin master报如下警告Pulling without specifying how to reconcile divergent branches

    git pull和git pull origin master报如下警告 hint: Pulling without specifying how to reconcile divergent bra ...

  5. git pull和git fetch的区别

    pull和fetch都是拉取,但是他们的区别很大 先用一张图来理一下git fetch和git pull的概念: 可以简单的概括为: git fetch是将远程主机的最新内容拉到本地,用户在检查了以后 ...

  6. Git 常用操作(5)- git clone/git checkout -b/git diff/git push/git pull

    1. git clone--获取远程仓库 当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容.它只会获取数据然后 让你自己合并. 然而,有一个命令叫作 git p ...

  7. Git fetch和git pull的区别

    原文:http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地 ...

  8. git:Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists)....

    Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). 解决办法一:保 ...

  9. 关于git fetch 和git pull 的区别

    1.fetch 相当于是从远程获取最新版本到本地,不会自动merge. git fetch origin master:tmp git diff tmp  git merge tmp 2. git p ...

最新文章

  1. 华科提出目标检测新方法:基于IoU-aware的定位改进,简单又有效
  2. [BTS06]BizTalk2006 SDK阅读笔记(五) 管道-Pipeline
  3. 聊聊redis的HealthIndicator
  4. 【python】-- pymsql 外键
  5. layui 刷新页面_layuimini简洁、清爽、易用的layui后台框架模板
  6. 国际人工智能算法与应用研讨会(WASA 2018)参会笔记
  7. jquery checkbox 选中、改变状态、change 和 click 事件
  8. python函数被调用才能执行吗_python3x函数在不被调用的情况下运行
  9. oracle根据当前月份往前,oracle获取系统日期--当前时间+前一天+当前月+前一个月...
  10. 鲁棒控制(棒棒控制原理)
  11. 电力拖动计算机系统考试,电力拖动自动控制系统__考试复习题.docx
  12. Openjudge:向量点积计算
  13. Java手机列表(供开发者参考)
  14. Java开发四年,分享我收藏的网站和资源(不看亏一亿)
  15. 用VSCode编写Latex时遇到的问题(Mac系统下)
  16. 开源SWD脱机烧录器-第二章 SWD协议移植
  17. 基于B树的图书管理系统(C语言)(含完整代码)
  18. 百度云:当AI遇到视频
  19. PTA-至多删三个字符:动态规划
  20. 云账户是什么意思?有什么用?

热门文章

  1. 如何修复无法在苹果Mac上使用缩放
  2. [附源码]java毕业设计医院药房管理系统
  3. 以图片形式显示道客巴巴的文档,便于打印。
  4. python编写一个简单计算器_如何用Tkinter写个简单计算器
  5. 张三为他的手机设定了自动拨号- 按1:拨爸爸的号- 按2:拨妈妈的号- 按3:拨爷爷的号- 按4:拨奶奶的号
  6. 更深入理解 Python 中的迭代
  7. 智力题:四人过桥问题
  8. 整数数除以3不用除法
  9. 壹百度-百度十年千倍的29条法则
  10. Cisco产品识别标准