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

Why `git merge` happens but `git log --graph` does not show the branching?

我不理解 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

可能由于快进提交,绘图不可见。但是我想我以前在快进合并中看到过绘图和合并提交。

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

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

Merge​ ​branch 'feature1'​ ​into develop

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

为什么会这样?如何实现合并分支时的标准消息和可视化绘制?

谢谢。

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