合并提交有什么问题?

时间:2013-11-26 07:32:23

标签: git git-merge git-rebase

我看到很多问题,人们在问这怎么可以避免“毫无意义”的合并提交。

合并提交到底有什么不好?我觉得它们很有用,因为你可以确切地看到两个开发人员开始工作的地方,以及工作合并在一起的地方。正如许多答案所暗示的那样,这种信息似乎已经破坏了,这会破坏这些信息,并且会失去很多项目的历史。

是否有一些我遗漏的东西导致合并提交不合适?

1 个答案:

答案 0 :(得分:11)

有两种不同类型的合并提交:

  • 显式合并提交,例如明确将功能分支合并到主分支
  • 和隐式合并提交,例如在尝试推送
  • 之前执行git pull

显式合并提交通常都很好。您通常会通过说git merge --no-ff来强制执行这类合并提交。

隐含的只是噪音,因为典型的情况是,一个开发人员更改了一个文件,然后另一个开发人员在另一个文件上工作,但在进行更改之前忘了拉,而git pull将隐式地通过创建嘈杂的合并提交来合并两个提交。逻辑上的历史记录只是一个作者的一个提交和另一个作者的一个提交。做git pull --rebase将完全做到这一点。

当然也有例外。如果两个作者实际上都在同一个文件上工作,那么此时进行合并提交可能会更好。 - 但即使在这种情况下,也许rebase可能会更好,因为它会使针对第一次提交的更改更加明确,因此更不容易出错。