独奏开发者的Git:合并VS rebase

这个问题在这里已经有了答案:

  • 你什么时候使用git rebase而不是git merge? 14个答案

  • 合并就像名称所说的那样,它将两个发展分支合并为一个。 所以想象你在提交M1时有一个主分支。 然后你在你的笔记本上工作并创建提交N.并且你还在桌面上工作并创建提交L:

       N
      /
    M1-L
    

    当你将N合并到L中时,你可以合并这些变化并获得新的提交M2

       N
      / 
    M1-L-M2
    

    这样可以保留所有的变化,但是你会得到这个小小的双重路径,这可能会变得相当混乱,特别是当你有很多变化的时候。

    然后有rebase。 从相同的情况开始,rebase会采用N或L中的一个,并假设它是在另一个之后创建的。 这导致了一个新的提交n'

    M1-L-N'
    

    N'和M2有相同的内容,只是他们的历史看起来不同。 只要你一个人,就没关系。 两种方式你都会有现状

    如果你在一个团队中,差异就变得很重要:

    当你将一个已经被别人拉过来的分支重新绑定时,他可能会看到一些混乱的效果,因为他正在处理的分支突然包含完全不同的提交。 所以你不想重新发布上市的东西。

    另一方面,如果你有十个开发人员像地狱一样提交和合并,历史就会变得混乱,你可能更喜欢让开发人员在私有存储库上工作,然后在推送到集成分支之前重新绑定。


    rebasemerge是将你的分支与另一个分支合作的不同策略。 亚历山大基金会将历史改变为两个分支开始分化的地步。 另一方面合并 ,不会改变历史,并可能创建一个新的提交来显示两个分支的合并。

    另请参阅此文档关于重新合并和合并。 底线:使用rebase进行未修改的更改以创建整洁的历史记录; 否则使用合并。

    更新: Linus在2009年写了这篇文章,看他对git rebase和merge的建议。 底线:谨慎对待你自己的私人资料。 如果您的提交已被推送,则不需要重新分派。

    链接地址: http://www.djcxy.com/p/49265.html

    上一篇: Git for solo developer: merge vs rebase

    下一篇: Filetree is not refreshing after switching branches