git pull --rebase,git rebase和git merge之间的区别

Gau*_*wal 6 git git-svn

任何人都可以解释这一点,甚至记住远程存储库?

Thi*_*ter 8

git pull --rebase 当你想让你的开发分支更新时,你可以采用这种方式 - 这些分支通常不会发布给其他分支(除了可能看看它),所以重写历史不是问题,你真的不想要合并在这样的分支中等.

git merge执行合并; 有关详细信息,请参阅联机帮助页 - 该命令有很多选项,在这里解释得太多了.

git rebase执行rebase,即重写历史记录.它将使您的提交达到与其他分支不同的程度,暂时删除它们,从其他分支应用缺少的提交,然后重新应用您的提交.git rebase还有一个交互模式,您可以在其中删除/修改/合并(压缩)某些提交.

请查看http://learn.github.com/p/rebasing.html,了解有关rebase如何工作的一些很好的图表.


Cha*_*esB 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'
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,合并创建branch分支被合并到master,导致创建合并提交,E.在第二种情况下,D只需重新插入master,创建另一个提交,D'.

git pull --rebase将从远程获取更改,并在其上重新设置(重新插入)您的更改.它将从字面上记录您所做的不在遥控器上的更改,并从刚刚获取的最后一次更改开始重播它们.