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

git-pull-rebase、git-rebase和git-merge之间的区别,git,git-svn,Git,Git Svn,任何人都可以在考虑远程存储库的情况下解释这一点吗?git-rebase允许您从分支点分离分支,并将其重新插入另一个分支的顶部git merge只是简单地合并当前分支中另一个分支的更改,而无需重新插入历史记录 如果没有冲突,则合并和重基之间的结果相同,但历史记录不同: (merge branch on master): master --A--B--C--E / branch --D (rebase branch onto maste

任何人都可以在考虑远程存储库的情况下解释这一点吗?

git-rebase
允许您从分支点分离分支,并将其重新插入另一个分支的顶部
git merge
只是简单地合并当前分支中另一个分支的更改,而无需重新插入历史记录

如果没有冲突,则合并和重基之间的结果相同,但历史记录不同:

(merge branch on master):
master    --A--B--C--E
                   /
branch          --D

(rebase branch onto master):
master     --A--B--C--D'
在第一种情况下,合并创建
分支
分支合并到
,从而创建合并提交,
E
。在第二种情况下,
D
只需重新插入
master
,创建另一个提交,
D'

git pull--rebase
将从远程设备获取更改,并在远程设备上重新设置更改的基础(重新插入)。它将逐字记录您所做的远程更改,并从它刚刚获取的最后一个更改开始重放这些更改。

git pull——当您希望更新开发分支时,rebase
是一种方法——这些分支通常不会发布给其他人(可能只是为了查看一下)所以重写历史不是问题,你真的不想在这样一个分支中进行合并等

git merge
执行合并;请参阅手册页了解详细信息-comand有大量选项,此处无法解释

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


看看一些关于rebase如何工作的漂亮图表。

没有git提交--rebase;你是说git pull--rebase?或者,
git-svn-dcommit——没有重新基址
?(起初错过了git svn标记)感谢您指出错误。。我已经更新了问题!注意:git 2.8(2016年3月)将允许使用
git pull--rebase=interactive命令。看见