git rebase & git pull --rebase

原创 2016年05月31日 15:21:52

git merge

这里写图片描述
merge后产生的一个节点,其继承于两个分支。

git rebase

$ git checkout mywork
$ git rebase bugfix 

让当前分支并入bugfix的下游!也就是说bugfix是mywork的新base
切换到mywork,并让mywork放到bugfix中的下游去。

效果如下:
这里写图片描述
注意:
当’mywork’分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除. (请查看 git gc)

git fetch

说明git pull 之前一定要说明git fetch
git fetch 不会修改当前你的分支,他只会修改本地的远程分支
效果如下:
这里写图片描述
可以看到,git fetch之后会更新origin/master的指针位置,但是并不会改变工作分支master

git pull

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
$ git pull origin next:master

git pull –rebase

git pull –rebase 隐含了两点,一点是当前分支肯定是一个跟踪分支,否则git 无法知道远程repo地址以及取哪个分支

假设我们有一个远程分支 origin/b1,其跟踪分支为b1,当前分支也为为b1
当执行git pull –rebase时,其动作分为两部分
1. git fetch 当前分支
2. git rebase origin/b1 (将b1放到origin/b1)的下游去
效果如下:
这里写图片描述

缺点

git rebase 将图中的C3 C5挨个与 origin/master 合并,当本地的master分支与origin/master相差很多个commit的时候,会非常麻烦,这时候我们可以直接fetch 再merge到当前分支,再推送

git Rebase 与 pull 区别

rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。 $ git checkout -b mywork origin 现在我...
  • chang_xing
  • chang_xing
  • 2014年01月10日 11:51
  • 5649

git pull 和 git pull --rebase

git pull的默认行为是git fetch + git merge, git pull --rebase则是git fetch + git rebase. 从目的来说,两者没差别,运行之...
  • vtion001
  • vtion001
  • 2015年04月21日 10:59
  • 842

给git pull默认加上rebase功能

git pull时可以加上--rebase参数, 使之不产生Merge点, 保证了代码的整洁, 即: git pull --rebase 但每次都加--rebase似乎有些麻烦,我们可以指定某个分支...
  • zzqhost
  • zzqhost
  • 2017年05月08日 10:25
  • 1643

git rebase的原理之多人合作分支管理

在上篇的Git rebase -i 交互变基,体验艺术般的命令文章中,我有两点为忽略了,现在补充说明下 1、在git rebase -i 后 ,用git push -f origin local_br...
  • zwlove5280
  • zwlove5280
  • 2015年07月01日 12:48
  • 2972

Git rebase

当本地commit一个提交和远端服务器中的代码有冲突(别人也改了相同的文件)时可以在pull 中加 –rebase。加上 rebase 的意思是: git pull --rebase 把本...
  • huangyabin001
  • huangyabin001
  • 2014年06月12日 09:12
  • 32945

git pull和git pull --rebase的不同

两者的区别可以用下面的关系式来表示: git pull = git fetch + git merge git pull --rebase = git fetch + git rebase ...
  • fanpengfei0
  • fanpengfei0
  • 2017年01月05日 02:54
  • 1456

git fetch, git pull, git pull -rebase区别

1、git fetch vs  git pull 都是从远程拉取代码到本地,git fetch只是拉取到本地,git pull不仅拉取到本地还merge到本地分支中。所以git pull是git f...
  • duomengwuyou
  • duomengwuyou
  • 2016年04月20日 13:51
  • 5726

git fetch, rebase,pull,merge 区别

What are the differences between git pull and git fetch? In the simplest terms, git pull does...
  • carolzhang8406
  • carolzhang8406
  • 2015年11月11日 14:41
  • 1549

git rebase 使用

转自: http://blog.chinaunix.net/uid-26952464-id-3352144.html Git Community Book 中文版书上,摘录如下:   一、基本...
  • WitsMakeMen
  • WitsMakeMen
  • 2014年03月31日 13:13
  • 15452

git 上传项目 报错 git pull --rebase origin master

git 执行git pull –rebase报错误如下:  error: Cannot pull with rebase: You have unstaged changes.  error:...
  • Minus_God
  • Minus_God
  • 2017年11月18日 09:46
  • 295
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git rebase & git pull --rebase
举报原因:
原因补充:

(最多只允许输入30个字)