说的另一个问题git pull
就像一个git fetch
+ git merge
。
但是git pull
VS git fetch
+和有git rebase
什么不一样?
说的另一个问题git pull
就像一个git fetch
+ git merge
。
但是git pull
VS git fetch
+和有git rebase
什么不一样?
Answers:
从您的问题中可以明显看出,您实际上只是在询问git merge
和之间的区别git rebase
。
因此,假设您处于一般情况下-您已经在master分支上完成了一些工作,并且从origin分支中拉了过来,这也已经完成了一些工作。提取后,情况如下:
- 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)
在这两种情况下,您的工作树的内容都应该相同。您刚刚创造了一段不同的历史。重新设置将重写您的历史记录,使其看起来就像您已在原始原始主分支(R
)上提交,而不是在最初提交的位置(H
)上提交。如果其他人已经从master分支中撤出,则永远不要使用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 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
(更改版本历史记录方式之间的区别)
git fetch + git rebase
命令的工作方式。从现在开始,我们的git树上不再存在或多或少的冲突:)