为什么`git merge` 发生,但`git log --graph` 不显示分支?

问题描述

我不明白 git merge 的行为。有时,我合并一个分支,在执行 git log --graph 后,我可以看到分支合并为平局,如下所示:

    D  
   / \
  C   B
   \ /
    A

我刚刚做了

$ git merge feature1 develop 
Updating 4c3dd3e..a90a849 fast-forward 
fileA.txt | 1 +  1 file changed,1 insertion(+)

它有效。我什至可以删除主题分支,表明该分支不再必不可少并且合并成功:

$ git branch -d feature1 
Deleted branch feature1 (was a90a849).

但是,我看不到图纸。我只有一行:

pedro (develop) second-final-project $ git log --graph 

* commit a90a84966040e36b994c0146bbd8a666954bee49 (HEAD -> develop)
| Author: Pedro Delfino <p.delfino01@gmail.com>
| Date:   Fri Jul 16 12:29:24 2021 -0300
| 
|     add feature 1
| 
* commit 4c3dd3ea0cfe07e1c9ccd9e65b2a2060137f1b27
| Author: Pedro Delfino <p.delfino01@gmail.com>
| Date:   Fri Jul 16 11:49:00 2021 -0300
| 
|     add fileA.txt
| 
* commit ae8124ea03436dd48d98424d594ff91b75bca00b (master)
  Author: Pedro Delfino <p.delfino01@gmail.com>
  Date:   Fri Jul 16 11:48:33 2021 -0300
  
      add README.md

也许由于快进提交,绘图不可见。但我想我之前已经看过快进合并中的绘图和合并提交了。

此外,我期待看到一些不同的提交消息。我收到了作为合并分支上最后一次提交的提交消息。

我希望看到带有该标准消息的合并提交,例如:

将分支'feature1'合并到develop

有时这种期望的信息自然会发生。在其他情况下,它不会,例如现在的情况。

为什么会这样?合并分支时如何实现标准消息和视觉绘图?

谢谢。

解决方法

那是因为那里没有真正的合并。 Git 只是从您所在的位置移动到您要合并的分支的位置(所谓的 fast-forward)。那是因为两个分支之间没有真正的分歧 您所在的修订版是您正在合并的分支的一个祖先,因此 git 避免了合并。在这种情况下,如果您想真正看到合并修订版,则需要运行 git merge --no-ff