git pull --rebase -- 这个命令是将远程分支变基到本地分支上吗?

4

我一直在复习Git的基础知识,看到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
当为真时,在获取后将当前分支变基于上游分支。 - user2864740
1个回答

3

您说得对,那个教程是不正确的。您期望的(以及观察到的)是 git pull --rebase 的作用。Git文档在 man git-pull 中表示:

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

When true, rebase the current branch on top of the upstream branch after fetching. If there is a remote-tracking branch corresponding to the upstream branch and the upstream branch was rebased since last fetched, the rebase uses that information to avoid rebasing non-local changes.

当前分支指的是本地检出的分支,上游分支指的是远程分支。请注意,--rebase 等同于 --rebase=true


非常感谢您的澄清!我真的开始怀疑我对git的了解。 - GitterLeaner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接