问题描述
我不明白 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