git pull --rebase-远程是否重新建立到本地分支上?

时间:2018-10-24 21:18:20

标签: git

我一直在审查一些Git基础知识,并且在有关pulling, merging and rebasing的Atlassian文档中,有一件事我不太了解。分支的基本状态如下(页面上有实际图像,我无法以自己的声誉发布它们):

                         A - B - C (Master on remote origin)
                       / 
(Local origin/master) D - E - F - G (Local master)

现在,我们要从远程提取更改并重新设置其基准。通过阅读其他文档并尝试变基,我可以期望git pull --rebase将在E-F-G之上重播提交A-B-C。但是取而代之的是Atlassian教程说结果看起来像这样:

                         A - B - C (Master on remote origin)
                       / 
(Local origin/master) D - E - F - G  -  A - B - C (Local master)

因此,远程更改重新基于本地分支。我认为它不是那样工作的(至少不是没有特殊命令),而且它似乎比其他方法更具侵入性。如果您现在要推送,那么您毕竟会重写很多遥控器的历史记录。

这里的文档是否正确?在哪种情况下会发生这种情况?大多数描述似乎暗示或表明已获取远程分支,而本地分支基于该分支重新建立了分支,这似乎也最有意义。

我想我一定是在误解某些东西,或者是我误读了数字。

1 个答案:

答案 0 :(得分:2)

您完全正确,该教程是错误的。您期望(观察到的)就是git pull --rebase所做的。 Git文档在man git-pull中说:

-r
--rebase[=false|true|merges|preserve|interactive]
     

为true时,将当前分支重新置于上游分支之上   提取后。如果有一个对应的远程跟踪分支   自上次以来,上游分支机构和上游分支机构已重新设置了基础   提取后,rebase使用该信息来避免重新定位非本地   变化。

使用当前分支指的是本地签出的分支,而上游分支指的是远程分支。请注意,--rebase等效于--rebase=true