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

Ped*_*ino 1 git git-merge git-log

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

\n
    D  \n   / \\\n  C   B\n   \\ /\n    A\n
Run Code Online (Sandbox Code Playgroud)\n

我已经做了

\n
$ git merge feature1 develop \nUpdating 4c3dd3e..a90a849 Fast-forward \nfileA.txt | 1 +  1 file changed, 1 insertion(+)\n
Run Code Online (Sandbox Code Playgroud)\n

有用。我什至可以删除主题分支,这表明该分支不再是不可或缺的并且合并成功:

\n
$ git branch -d feature1 \nDeleted branch feature1 (was a90a849).\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
pedro (develop) second-final-project $ git log --graph \n\n* commit a90a84966040e36b994c0146bbd8a666954bee49 (HEAD -> develop)\n| Author: Pedro Delfino <p.delfino01@gmail.com>\n| Date:   Fri Jul 16 12:29:24 2021 -0300\n| \n|     add feature 1\n| \n* commit 4c3dd3ea0cfe07e1c9ccd9e65b2a2060137f1b27\n| Author: Pedro Delfino <p.delfino01@gmail.com>\n| Date:   Fri Jul 16 11:49:00 2021 -0300\n| \n|     add fileA.txt\n| \n* commit ae8124ea03436dd48d98424d594ff91b75bca00b (master)\n  Author: Pedro Delfino <p.delfino01@gmail.com>\n  Date:   Fri Jul 16 11:48:33 2021 -0300\n  \n      add README.md\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n
\n

合并\xe2\x80\x8b \xe2\x80\x8b分支 'feature1'\xe2\x80\x8b \xe2\x80\x8bin进行开发

\n
\n

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

\n

为什么会出现这种情况?合并分支时如何实现所需的标准消息和可视化绘图?

\n

谢谢。

\n

eft*_*ft0 5

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