任何人都可以通过记住远程存储库来解释这一点吗?
2 回答
git pull --rebase
当您想使您的开发分支保持最新时,这是要走的路 - 这些分支通常不会发布给其他人(可能是为了查看它),因此重写历史不是问题,您真的不想要合并等在这样一个分支。
git merge
执行合并;有关详细信息,请参阅手册页 - 该命令有很多选项,在这里无法解释。
git rebase
执行变基,即重写历史。它将把你的提交带到它们与另一个分支不同的点,暂时删除它们,从另一个分支应用丢失的提交,然后重新应用你的提交。git rebase
还具有交互模式,您可以在其中删除/修改/组合(挤压)某些提交。
查看http://learn.github.com/p/rebasing.html以获得一些关于变基如何工作的漂亮图表。
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
将从远程获取更改,并在其上重新设置(重新插入)您的更改。它会从字面上记录您所做的不在遥控器上的更改,并从它刚刚获取的最后一个更改开始重播它们。