git pull 与 git pull --rebase
文章目录
- 前提知识
- 区别git pull 与 git pull --rebase
- 简单理解
- git merge与git rebase
git pull
和 git pull --rebase
命令都是从远端拉取代码,更新我们的仓库。
前提知识
四个区:
- 工作区 :代码在本地存储的目录位置
- 暂存区 :git可以追踪的代码(工作区可以将代码添加到暂存区(add))——临时存储
- 本地库 :暂存区的代码可以提交到本地库(commit),并生成对应的版本 ——生成历史版本
- 远程库:(远程库:如github)本地区的代码可以提交到远程库(push),并生成对应的版本 ——存储在远端
区别git pull 与 git pull --rebase
简单理解
git pull
是 git pull --merge
的简写。
git pull
与git 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相关推荐
- 【Git】git pull和git pull --rebase的使用
git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebas ...
- git pull和git pull -- rebase
在开始对比这两条命令之前,请大家思考三个问题: 1 工作区不干净(没有git add .)可以git pull或者git pull - -rebase代码吗? 结果是不可以,如果你没有将修改提交到暂存 ...
- git fetch 与 git pull
文章目录 git flow 流程 git fetch 与 git pull 区别 git fetch 工作流程 git flow 流程 先来看一张图吧: 大致流程是这样的:我们在本地(工作区)编写好代 ...
- 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 ...
- git pull和git fetch的区别
pull和fetch都是拉取,但是他们的区别很大 先用一张图来理一下git fetch和git pull的概念: 可以简单的概括为: git fetch是将远程主机的最新内容拉到本地,用户在检查了以后 ...
- Git 常用操作(5)- git clone/git checkout -b/git diff/git push/git pull
1. git clone--获取远程仓库 当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容.它只会获取数据然后 让你自己合并. 然而,有一个命令叫作 git p ...
- Git fetch和git pull的区别
原文:http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地 ...
- 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). 解决办法一:保 ...
- 关于git fetch 和git pull 的区别
1.fetch 相当于是从远程获取最新版本到本地,不会自动merge. git fetch origin master:tmp git diff tmp git merge tmp 2. git p ...
最新文章
- 华科提出目标检测新方法:基于IoU-aware的定位改进,简单又有效
- [BTS06]BizTalk2006 SDK阅读笔记(五) 管道-Pipeline
- 聊聊redis的HealthIndicator
- 【python】-- pymsql 外键
- layui 刷新页面_layuimini简洁、清爽、易用的layui后台框架模板
- 国际人工智能算法与应用研讨会(WASA 2018)参会笔记
- jquery checkbox 选中、改变状态、change 和 click 事件
- python函数被调用才能执行吗_python3x函数在不被调用的情况下运行
- oracle根据当前月份往前,oracle获取系统日期--当前时间+前一天+当前月+前一个月...
- 鲁棒控制(棒棒控制原理)
- 电力拖动计算机系统考试,电力拖动自动控制系统__考试复习题.docx
- Openjudge:向量点积计算
- Java手机列表(供开发者参考)
- Java开发四年,分享我收藏的网站和资源(不看亏一亿)
- 用VSCode编写Latex时遇到的问题(Mac系统下)
- 开源SWD脱机烧录器-第二章 SWD协议移植
- 基于B树的图书管理系统(C语言)(含完整代码)
- 百度云:当AI遇到视频
- PTA-至多删三个字符:动态规划
- 云账户是什么意思?有什么用?