git pull VS git fetch git rebase
Another question表示git pull
就像是git fetch
+ git merge
。git pull VS git fetch git rebase
但是git pull
VS git fetch
+ git rebase
有什么区别?
从你的问题中应该很明显你实际上只是询问git merge
和git rebase
之间的差异。
因此,让我们假设你在通常情况下是 - 你做你的主分支的一些工作,并从产地的,也做了一些工作拉。在获取之后,事情是这样的:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
如果合并在这一点上(GIT拉的默认行为),假设没有任何冲突,你结束了这一点:
- 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
)。如果其他人已经从你的主分支中拉出,你永远不应该使用rebase方法。
最后,请注意,通过将配置参数branch.<name>.rebase
设置为true,您实际上可以为给定分支设置git pull
以使用rebase而不是merge。您也可以使用git pull --rebase
单拉做到这一点。
Wha如果在某人已经从你的主分支中拉出后重新分配资金,那么情况会发生吗?这会打破回购? – 2011-03-22 06:36:06
你如何知道是否有人从你的主分支中拉出来? – Frank 2012-08-07 05:47:23
如果你不确定某人*没有*,你应该假设他们有。 – 2013-02-11 06:20:10
在回答你的第一个声明“git的拉就像一个git取+ git的合并。”,
‘在默认模式下,git的拉动是简写形式,git的取指,然后 混帐合并FETCH_HEAD’更准确地说,混帐拉运行混帐与 给定参数提取和调用git的合并来合并检索分支 头进当前的分支”
(参考文献:https://git-scm.com/docs/git-pull)
对于你的第二个声明/问题:'但正是VS混帐混帐拉之间的差额提取+ git的重订' 再次,从同一来源:
“有了--rebase,它运行git的变基,而不是git的合并。“现在
,如果你要问取和合并的区别,那就是这里太回答: https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(改变方式的版本历史记录,什么不可以的区别)有人要收拾的链接...而且我有多少票,其他的问题得到了惊奇 – xenoterracide 2010-07-28 20:33:15
@xeno:我认为它只是有多少人去数到“我有这个问题太” – bobobobo 2010-07-28 21:10:17
有一天我我会抽出时间来真正阅读git文档,但在那之前,我会将这些类型的问题添加到我的投票 – 2012-09-18 16:03:56