小编典典

git pull 和 git fetch + git rebase 有什么区别?

all

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

git pull但是和git fetch+有什么区别git rebase


阅读 105

收藏
2022-04-13

共1个答案

小编典典

从您的问题中应该很明显,您实际上只是在询问git mergeand之间的区别git 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)

另一方面,如果你做了适当的变基,你最终会得到这个:

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

在这两种情况下,你的工作树的内容应该是一样的; 你刚刚创造了一段不同的历史。rebase 会重写您的历史记录,使其看起来好像您已在 origin
的新 master 分支 ( R) 之上提交,而不是您最初提交的位置 ( H)。如果其他人已经从您的 master 分支中拉出,您不应该使用
rebase 方法。

最后,请注意,您实际上可以git pull通过将 config 参数设置为 true 来为给定分支设置使用 rebase
而不是合并branch.<name>.rebase。您也可以使用git pull --rebase.

2022-04-13