任何人都可以解释这一点,甚至记住远程存储库吗?
答案 0 :(得分:8)
git pull --rebase
是你想要让你的开发分支更新的方法 - 那些分支通常不会发布给其他人(除了可能看看它)所以重写历史不是问题而你真的不希望在这样的分支中合并等。
git merge
执行合并;有关详细信息,请参阅联机帮助页 - 该命令有很多选项,在这里解释得太多了。
git rebase
执行rebase,即重写历史记录。它将使您的提交达到与其他分支不同的程度,暂时删除它们,从另一个分支应用缺少的提交,然后重新应用您的提交。 git rebase
还有一个交互模式,您可以在其中删除/修改/合并(压缩)某些提交。
请查看http://learn.github.com/p/rebasing.html,了解有关rebase如何运作的精彩图表。
答案 1 :(得分:6)
git rebase
允许您从分支点分离分支,并将其重新插入另一分支的顶部。 git merge
只是简单地合并当前分支中另一个分支的更改,而不会重新插入历史记录。
如果没有冲突,则merge和rebase之间的结果相同,但历史记录不同:
(merge branch on master):
master --A--B--C--E
/
branch --D
(rebase branch onto master):
master --A--B--C--D'
在第一种情况下,合并创建branch
分支被合并到master
,从而导致创建合并提交E
。在第二种情况下,只需将D
重新插入master
,即可创建另一个提交,D'
。
git pull --rebase
将从远程获取更改,并在其上重新设置(重新插入)您的更改。它将从字面上记录您所做的不在遥控器上的更改,并从刚刚提取的最后一次更改开始重播它们。