mic*_*ael 286 git git-pull git-rebase git-fetch
另外一个问题说,git pull就像是一个git fetch+ git merge.
但是git pullVS git fetch+有git rebase什么区别?
Cas*_*bel 333
你的问题应该很明显,你实际上只是在询问git merge和之间的区别git rebase.
所以让我们假设你处于常见的情况 - 你已经在你的主分支上完成了一些工作,你从原点开始,也做了一些工作.获取后,事情看起来像这样:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
Run Code Online (Sandbox Code Playgroud)
如果你在这一点上合并(git pull的默认行为),假设没有任何冲突,你最终得到这个:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
Run Code Online (Sandbox Code Playgroud)
另一方面,如果你做了相应的rebase,你最终会得到这个:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,工作树的内容应该相同; 你刚刚创造了一个不同的历史导致它.rebase重写你的历史记录,使它看起来好像你已经在origin的新master分支(R)上提交,而不是你最初提交的地方(H).如果其他人已从主分支中撤出,则不应使用rebase方法.
最后,请注意,您可以git pull通过将config参数设置branch.<name>.rebase为true 来实际设置给定分支以使用rebase而不是merge .您也可以使用单次拉动来完成此操作git pull --rebase.
git pull是喜欢跑步 git fetch,然后git merge
git pull --rebase就像git fetch则git rebase
git pull就像一个git fetch+ git merge。
“在其默认模式下,git pull是
git fetch后跟git mergeFETCH_HEAD的简写形式。”更精确地讲,以给定的参数git pull运行git fetch,然后调用git merge以将检索到的分支头合并到当前分支中
(参考:https : //git-scm.com/docs/git-pull)
“但是git pullVS git fetch+和有什么区别?git rebase”
同样,来自同一来源:
git pull --rebase
“使用--rebase,它将运行git rebase而不是git merge。”
“ merge与rebase” 之间的区别
也可以在这里回答:
https : //git-scm.com/book/en/v2/Git-Branching-Rebasing
(改变版本历史记录方式之间的区别)