有没有之间的差异git rebase upstream/master
和git pull --rebase upstream master
,如果是这样,是什么? 遥控可以是任何远程,不一定上游。
Answer 1:
在git pull --rebase
将抓取( git fetch
)第一,更新upstream/master
提交。
如果你只是衍合而不需要首先更新upstream/master
,你不会得到相同的结果。
我说明了它的“ master
分支和‘ origin/master
’有分歧,如何‘undiverge’分支? ”
蛇提到在评论中说git pull --rebase
是不完全 git fetch && git rebase origin/master
。
请参阅“ 什么是” git pull --rebase
“吗? ”
(origin/master)
|
A--B--C (master)
\
B'--D (actual origin/master after changing B and force pushing)
什么git pull --rebase
呢,在这种情况下,就是:
git fetch origin
git rebase --onto origin/master B master
这里:
- 起源/主是新的更新
origin/master
(B'
) -
B
是旧的origin/master
(前一个取指令更新它) -
master
是分支重放的顶部origin/master
这不同于git fetch
+ git rebase origin/master
,该pull --rebase
命令试图找出哪些提交是真正本地的,并且已经在前面的获取来自上游。
要做到这一点,它看起来在远程追踪分支的引用日志(
origin/master
,在这种情况下)。 此引用日志代表连续的提示git fetch
上操作origin
,在“最近的第一”的命令。对于每一个条目引用日志,(
origin/master@{1}
然后...{2}
等等)它检查该承诺是当前分支头的祖先master
。 一旦它找到一个,它捡起来作为起点(变基B
在上面的例子)。
文章来源: git rebase upstream/master vs git pull --rebase upstream master