【问题标题】:Git for solo developer: merge vs rebase [duplicate]独立开发者的 Git:合并与变基 [重复]
【发布时间】:2013-07-27 16:02:03
【问题描述】:

我是一名独立开发人员,并且刚刚开始使用带有私有 BitBucket 存储库的 Git。我不清楚的一件事是 Merge 与 Rebase。

我经常在台式机和笔记本电脑之间切换,并且一直在使用 BB 来访问任一平台上的最新代码。当我加载最新提交的代码时,我一直在使用 rebase,因为我认为它基本上清除了该平台(台式机或笔记本电脑)上的所有内容,并确保我拥有与提交给 BB 的相同代码。那是对的吗?我什么时候应该对这样的操作使用合并?

【问题讨论】:

  • 不太明白I think it essentially clears out everything on that platform (desktop or laptop) and ensures I have the identical code as committed to BB的意思?
  • 基本上,当我 pull 和 rebase 时,我认为它会将我硬盘上的文件更新为 BB 上的版本。但是 Merge 有什么不同吗?
  • 如果你想有效地使用 Git,我强烈推荐free online Pro Git book,尤其是第 1-3 章和第 6-6.5 章。
  • 不错的纸杯蛋糕!谢谢。
  • 查看this答案。

标签: git


【解决方案1】:

rebasemerge 是使您的分支与另一个分支更新的不同类型的策略。 rebase 将历史记录更改为两个分支开始分歧的点。另一方面,merge 不会改变历史记录,并且可能会创建一个新的提交来显示两个分支的合并。

另请参阅this document 关于 rebase 与合并。底线:使用 rebase 进行未推送的更改以创建整洁的历史记录;否则使用合并。

更新:Linus 在 2009 年写过这篇文章,请参阅 his advice on git rebase and merge。底线:谨慎地仅对您自己的私人内容进行变基。如果您的提交已被推送,则不再进行变基。

【讨论】:

    【解决方案2】:

    merge 顾名思义,它将两个开发分支合二为一。所以假设你在提交 M1 有一个主分支。然后您在笔记本上工作并创建提交 N。您还可以在桌面上工作并创建提交 L:

       N
      /
    M1-L
    

    当您将 N 合并到 L 时,您会合并更改并获得新的提交 M2

       N
      / \
    M1-L-M2
    

    这会保留所做的所有更改,但是您会得到这些小的双路径,这可能会变得非常混乱,尤其是当您有很多更改时。

    然后是变基。从相同的情况开始,rebase 会采用提交 N 或 L 中的一个,并假装它是在另一个之后进行的。这会导致一个新的提交 n'

    M1-L-N'
    

    N' 和 M2 的内容相同,只是它们的历史看起来不同。

    只要你一个人
    没关系。您将拥有双向的当前状态

    如果你在一个团队中
    区别变得很重要:

    当您 rebase 一个已经被其他人拉取的分支时,他可能会看到一些令人困惑的效果,因为他正在处理的分支突然包含完全不同的提交。
    因此,您不想对公开的内容进行变基。

    另一方面,如果您有 10 个开发人员 commitmerge 就像地狱一样,那么历史就会变得混乱,您可能希望让开发人员在私有存储库上工作,然后在 push 之前将 rebase 工作到集成分支.

    【讨论】:

    • 很好的解释!这让我明白了很多,vielen Dank!
    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 2013-05-14
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2020-08-23
    • 2015-06-28
    相关资源
    最近更新 更多