另一个问题说这git pull
就像一个git fetch
+ git merge
。
git pull
但是和git fetch
+有什么区别git rebase
?
另一个问题说这git pull
就像一个git fetch
+ git merge
。
git pull
但是和git fetch
+有什么区别git rebase
?
从您的问题中应该很明显,您实际上只是在询问git merge
and之间的区别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
.
git pull
就像跑步 git fetch
然后git merge
git pull --rebase
就像git fetch
那时git 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
'
同样,来自同一来源:
git pull --rebase
“使用 --rebase,它运行 git rebase 而不是 git merge。”
merge
'和之间的区别rebase
'
这也在这里得到了回答:
https
://git-scm.com/book/en/v2/Git-Branching-Rebasing
(改变版本历史记录方式的区别)