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