独奏开发者的Git:合并VS rebase
这个问题在这里已经有了答案:
合并就像名称所说的那样,它将两个发展分支合并为一个。 所以想象你在提交M1时有一个主分支。 然后你在你的笔记本上工作并创建提交N.并且你还在桌面上工作并创建提交L:
N
/
M1-L
当你将N合并到L中时,你可以合并这些变化并获得新的提交M2
N
/
M1-L-M2
这样可以保留所有的变化,但是你会得到这个小小的双重路径,这可能会变得相当混乱,特别是当你有很多变化的时候。
然后有rebase。 从相同的情况开始,rebase会采用N或L中的一个,并假设它是在另一个之后创建的。 这导致了一个新的提交n'
M1-L-N'
N'和M2有相同的内容,只是他们的历史看起来不同。 只要你一个人,就没关系。 两种方式你都会有现状
如果你在一个团队中,差异就变得很重要:
当你将一个已经被别人拉过来的分支重新绑定时,他可能会看到一些混乱的效果,因为他正在处理的分支突然包含完全不同的提交。 所以你不想重新发布上市的东西。
另一方面,如果你有十个开发人员像地狱一样提交和合并,历史就会变得混乱,你可能更喜欢让开发人员在私有存储库上工作,然后在推送到集成分支之前重新绑定。
rebase和merge是将你的分支与另一个分支合作的不同策略。 亚历山大基金会将历史改变为两个分支开始分化的地步。 另一方面合并 ,不会改变历史,并可能创建一个新的提交来显示两个分支的合并。
另请参阅此文档关于重新合并和合并。 底线:使用rebase进行未修改的更改以创建整洁的历史记录; 否则使用合并。
更新: Linus在2009年写了这篇文章,看他对git rebase和merge的建议。 底线:谨慎对待你自己的私人资料。 如果您的提交已被推送,则不需要重新分派。
链接地址: http://www.djcxy.com/p/49265.html