在开始对比这两条命令之前,请大家思考三个问题:

1 工作区不干净(没有git add .)可以git pull或者git pull - -rebase代码吗?

结果是不可以,如果你没有将修改提交到暂存区,那么无论是pull还是pull –rebase都是不可以拉下来代码的

接下来我们再多思考下:

2 如果工作区修改提交到暂存区但是没有commit可以调用git pull和git pull - -rebase命令吗?

综上所述我们的结论是:

工作区不commit是无法pull代码的

接下来看push命令:

3 如果工作区修改没有add可以调用git push命令吗?

4 如果工作区修改没有commit可以调用git push命令吗?

综上所述我们的结论是:

工作区不commit是无法push代码的

根据上面的结论我们知道必须commit才可以push和pull代码(也就是说必须有结点才可以pull/push代码)看图我们来分析git pull和git pull - -rebase的区别:

1 远程分支为dev分支,本地分支叫work,当我们从dev分支1拉取到本地的时候,两个分支的起始状态都是1

2 这个时候我们本地分支修改了3,而dev分支其他人推送了2,这个时候就出现了一个问题,我们该如何拉取代码呢?

思路:

1 假如dev分支没有更改,本地分支上一个结点就是dev分支最新结点

那么pull下来的代码最新的结点还是2结点,所以push上去的时候dev最新的结点是2结点

2 假如dev分支有了更改,本地分支上一个结点不再是dev分支最新结点

那么本地分支会新产生一个结点(内部新commit了一个结点,就是我们经常看到的Merge branch**,这个时候本地分支的结点就是1-3-4,push上去的时候dev分支就是1-2-4),这个结点是2和3 merge之后的结果

rebase=re+base,我把他翻译成“重新定义基点,简称重定基”,本地分支最新的结点本来是3,但是我使用git pull –rebase的时候把3修改先隐藏,让本地分支的最新结点变成远端的2结点,再在2结点的基础上增加3结点,这样push的时候dev分支就是3结点而不是merge结点了,这样就可以让我们的所有提交保持成一条线而不是很多merge

confilct处理:

无论是pull还是rebase,当同一个文件被其他人改动之后就会出现冲突,rebase只能做到不出现merge结点但是和pull一样遇到冲突需要自行解决

git pull遇到冲突

这个时候遇到的冲突比较常见,我们一般是手动修改冲突之后再add,commit,push没有什么好讲的了

git pull –rebase遇到冲突

先进入冲突的文件,解决之后使用 add 或者 rm<文件>,之后直接 git rebase –continue即可(注意不用commit,使用add <文件名>而不是add .)

最后如何把让我们使用git pull做git pull –rebase的操作呢?

配置

如果想要把 rebase 当做 git pull 的默认值,可以在 .git/config 加上
[branch “master”]
remote = origin
merge = refs/heads/master
rebase = true
也可以直接加到 ~/.gitconfig 让所有的 tracked branches 都自动套用这个设定:
[branch]
autosetuprebase = always

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

    文章目录 前提知识 区别git pull 与 git pull --rebase 简单理解 git merge与git rebase 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. Zend Framework Mail通过网易免费邮箱发送邮件
  2. 不用eclipse创建第一个servlet
  3. vulcanjs 核心架构概念
  4. lstrip在python中是什么意思_什么是一目均衡图?如何利用一目均衡图来做交易?...
  5. Python之OS模块:os.access()检验权限模式(验证文件及目录权限)
  6. c3074 无法使用带圆括号的_地埋警示带预防挖掘 石油管道警示带保护管道安全...
  7. 《Adobe Dreamweaver CS6中文版经典教程》——第2课 HTML基础2.1 什么是HTML
  8. vue3新增Suspense组件
  9. Luogu3516 POI2011 Shift 构造
  10. %%%%%%%%123564
  11. 刘强东案章泽天首发声;科大讯飞回应 AI 同传造假;新 iPhone 被指存缺陷 | 极客头条...
  12. 【3】基于深度神经网络的脑电睡眠分期方法研究(数据集分类)
  13. 点餐小程序购物车效果实现
  14. linux下u盘不识别问题,linux u盘不识别解决办法
  15. Ant Design Pro (五) 修改Footer
  16. IIS网站发布详细流程
  17. 配置Linaro toolchain交叉编译工具
  18. solidworks绘制齿轮、机械爪(齿轮设计基础知识)
  19. HUE介绍及使用功能
  20. 计算机系统保护怎么打开,Win7系统开启DEP数据执行保护的具体方法

热门文章

  1. zCrud组件(vue2封装增删查改到一个组件)
  2. 如何快速查询SOLIDWORKS官方教程
  3. EFT试验复位案例分析
  4. 不妙,2023年浙大mpa的复试形势比想象的更严峻,又在突突突涨……
  5. Ubuntu设置samba共享文件夹
  6. 浅谈语音技术(ASR/TTS/质检/声纹)
  7. netsh 获取计算机名,Windows中Netsh命令的典型应用
  8. Qt USB HID通讯
  9. 卒哥创业说:致富的秘密就是干
  10. 百位上的数字(蓝桥杯真题)