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

3
我将我的开发分支合并到了暂存分支,但是我在暂存分支上看不到合并提交记录。我做错了什么?我的工作流程如下:
  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任务。我还有另一个开发人员在同一项目中工作。由于某种原因,在两个分支中,提交历史看起来完全相同。以前它可以正常显示合并提交,但现在不行了。我们都无法弄清楚哪里出了问题。

你的“staging”分支上有任何提交吗? - prosoitos
合并之前没有进行任何提交。正如@bk2204所提到的,这会创建一个FF合并,因此缺少合并提交。已经搞清楚了。谢谢。 - suharsha
1个回答

2
当你使用Git合并两个分支,并且你要合并的分支是目标分支的子集时,Git会执行所谓的“快进式合并”,这基本上意味着你要合并的分支将直接更新为与另一个分支完全相同。换句话说,不会创建合并提交。
然而,有时这是不可取的,你想无论如何都创建一个合并提交。你可以通过使用“git merge --no-ff”来实现。因此,在你的例子中,在第5步,你需要运行“git merge --no-ff development”。
这可能会让人感到困惑,因为大多数托管平台(如GitHub)在合并时总是执行合并提交,尽管Git不会这样做。

谢谢@bk2204。我认为这解释了现在发生的事情。 但是为什么以前会发生而现在不会发生了呢? - suharsha
如果在“staging”中有提交,而这些提交不在“development”中,则Git无法执行快进并必须创建合并提交。因此,要么发生了这种情况,要么您使用了一个工具(例如,托管平台或编辑器集成)始终执行合并提交。 - bk2204
这下清楚了。现在我知道发生了什么事情。非常感谢。 - suharsha
@suharsha 快进式合并会将分支指针更新到与目标分支相同的提交。 - evolutionxbox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接