8

任何人都可以通过记住远程存储库来解释这一点吗?

4

2 回答 2

9

git pull --rebase当您想使您的开发分支保持最新时,这是要走的路 - 这些分支通常不会发布给其他人(可能是为了查看它),因此重写历史不是问题,您真的不想要合并等在这​​样一个分支。

git merge执行合并;有关详细信息,请参阅手册页 - 该命令有很多选项,在这里无法解释。

git rebase执行变基,即重写历史。它将把你的提交带到它们与另一个分支不同的点,暂时删除它们,从另一个分支应用丢失的提交,然后重新应用你的提交。git rebase还具有交互模式,您可以在其中删除/修改/组合(挤压)某些提交。

查看http://learn.github.com/p/rebasing.html以获得一些关于变基如何工作的漂亮图表。

于 2012-04-27T07:16:18.820 回答
7

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将从远程获取更改,并在其上重新设置(重新插入)您的更改。它会从字面上记录您所做的不在遥控器上的更改,并从它刚刚获取的最后一个更改开始重播它们。

于 2012-04-27T07:11:47.893 回答