Git 的提交历史中没有合并提交

No merge commit in the commit history in Git

我将开发分支合并到暂存分支,但在暂存分支上看不到合并提交。我究竟做错了什么?我的工作流程如下。

  1. 检查开发分支并进行一些更改
  2. 拉开发分支
  3. 将开发分支提交到本地仓库
  4. git checkout -q staging
  5. git merge development
  6. git push origin staging:staging
  7. git checkout -q development
  8. git push origin development:development

我将 VS Code GUI 用于 git 任务。我有另一个开发人员在同一个项目中工作。由于某种原因,在两个分支中,提交历史看起来完全一样。早些时候它曾经毫无问题地显示合并提交,但现在不是了。我们都搞不清楚哪里出了问题。

当您使用 Git 在两个分支之间执行合并并且您要合并的分支是您要合并到的分支的严格超集时,Git 执行所谓的 fast-forward merge,这基本上意味着您要合并到的分支只是直接更新为与另一个分支完全相同。换句话说,没有创建合并提交。

然而,有时这是不可取的,无论如何你都想创建一个合并提交。您可以使用 git merge --no-ff 来做到这一点。因此,在您的示例中,在第 5 步,您将 运行 git merge --no-ff development.

这可能会造成混淆,因为像 GitHub 这样的大多数托管平台在合并时总是执行合并提交,即使 Git 不会。