git rebase upstream/master
和git pull --rebase upstream master
之间是否有区别,如果有,是什么?遥控器可以是任何遥控器,不一定是上游。git rebase upstream/master vs git pull --rebase upstream master
32
A
回答
32
git pull --rebase
将fetch (git fetch
)首先更新upstream/master
提交。
如果你只是重新编号没有第一次更新upstream/master
,你不会得到相同的结果。
我说明它在 “master
branch and 'origin/master
' have diverged, how to 'undiverge' branches'?”
SnakE提到in the comments即git pull --rebase
是不准确git fetch && git rebase origin/master
。
请参阅 “what does "git pull --rebase
" do?”
(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的是新更新的
origin/master
(B'
) B
是旧的origin/master
(之前获取更新的话)master
是分支上的origin/master
这不同于git fetch
在+ git rebase origin/master
的pull --rebase
命令试图找出顶部重播其提交的真的当地一些,并且来自上一次获取的上游。
为此,它会查看远程跟踪分支的reflog(本例中为
origin/master
)。此reflog代表origin
以“最近的第一个”顺序的连续git fetch
操作的提示。对于每个reflog条目(
origin/[email protected]{1}
,然后...{2}
等),它会检查该提交是否是当前分支头的一个祖先master
。只要它找到一个,它就会选择它作为rebase的起点(上例中的B
)。
相关问题
- 1. git rebase vs git rebase <upstream>
- 2. git pull VS git fetch git rebase
- 3. “git rebase origin”与“git rebase origin/master”
- 4. git pull --rebase upstream&git push origin拒绝非快进?
- 5. git stash pop vs git rebase
- 6. Git - 合并vs rebase
- 7. git pull --rebase,git rebase和git merge之间的区别
- 8. git rebase from master to remote branch。!
- 9. 替代git rebase
- 10. 当我用“--rebase”做git pull origin master时会发生什么
- 11. git pull --rebase origin master每次出现时都会重新起始
- 12. 'git rebase`冲突
- 13. git rebase after git恢复
- 14. 如何使用GitPython库git pull rebase?
- 15. git pull --rebase --ff-only会做什么?
- 16. 我可以使用git pull --rebase而不是“git stash git pull git stash pop”吗?
- 17. 基于时间戳的git rebase master
- 18. git pull,git fetch和git rebase有什么区别?
- 19. git rebase基础知识
- 20. git rebase和文件冲突
- 21. 'git svn rebase'和'git rebase trunk'之间的区别
- 22. Git Auto Rebase问题
- 23. 当git pull导致冲突,但是git pull --rebase不会导致什么?
- 24. 主题分支中`git rebase upstream-branch`的致命错误
- 25. 撤销git svn rebase
- 26. 从URL /路径git rebase
- 27. 清理git rebase(应该有git pull'd)
- 28. git rebase到远程更新
- 29. git在rebase期间崩溃
- 30. 忘记了git rebase - 继续
所以'git pull --rebase upstream master'类似于'git fetch upstream && git rebase upstream/master'? – Dennis 2013-05-10 04:01:59
@丹尼斯,是的。 – VonC 2013-05-10 06:43:50
其实没有。想象一下,你拉过历史“A-B”,并在其上做了一个改变,“A-B-C”。然后其他人修改'B'到'B'',并且推动他们的变化,以便原点现在变成'A-B'-D'。现在,如果你执行'git fetch && git rebase origin/master',那么rebase将会失败并发生冲突。然而'git pull --rebase'会解决这个问题并最终以'A-B'-D-C'结尾。 'pull --rebase'地毯下肯定会发生一些魔法。编辑:[prooflink](http://gitolite.com/git-pull--rebase.html) – SnakE 2015-03-17 18:34:48