GIT中变基上游/主VS GIT中拉--rebase上游主(git rebase upstream/

2019-07-23 02:29发布

有没有之间的差异git rebase upstream/mastergit 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/masterB'
  • 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