git pull VS git获取git rebase

另一个问题说, git pull就像是一个git fetch + git merge

但是, git pull VS git fetch + git rebase什么区别?


从你的问题中应该很明显你实际上只是在问git mergegit rebase之间的区别。

因此,让我们假设你处于常见的情况 - 你已经在主分支上做了一些工作,并且从原点开始,这也做了一些工作。 取回之后,看起来像这样:

- o - o - o - H - A - B - C (master)
               
                P - Q - R (origin/master)

如果你现在合并(git pull的默认行为),假设没有任何冲突,你最终会得到这个结果:

- o - o - o - H - A - B - C - X (master)
                            /
                P - Q - R --- (origin/master)

另一方面,如果你做了适当的rebase,你最终会得到这样的结果:

- o - o - o - H - P - Q - R - A' - B' - C' (master)
                          |
                          (origin/master)

在这两种情况下,你的工作树的内容应该是一样的; 你刚刚创建了一个不同的历史 。 基地改写你的历史,使它看起来好像你是在原来的新主分支( R )之上进行的,而不是你最初承诺的地方( H )。 如果其他人已经从你的主分支中拉出,你永远不应该使用rebase方法。

最后,请注意,通过将config参数branch.<name>.rebase为true,您实际上可以为给定分支设置git pull以使用rebase而不是merge。 你也可以使用git pull --rebase做一次单拉操作。


在回复你的第一条语句'git pull就像一个git fetch + git merge''时,

“在默认模式下,git pull是git fetch的缩写,然后是git merge FETCH_HEAD”更确切地说,git pull使用给定的参数运行git fetch并调用git merge将检索到的分支头合并到当前分支中“

(参考:https://git-scm.com/docs/git-pull)


对于你的第二个陈述/问题:'但是git pull VS git fetch + git rebase有什么区别'再次来自同一个源代码:

“使用--rebase,它运行git rebase而不是git merge。”


现在,如果您想要了解获取和合并之间的区别,那么也可以在这里回答:https://git-scm.com/book/en/v2/Git-Branching-Rebase(改变版本历史记录被记录,什么不)

链接地址: http://www.djcxy.com/p/1207.html

上一篇: git pull VS git fetch git rebase

下一篇: In git how is fetch different than pull and how is merge different than rebase?