在 Linux 上使用 Git 1.8.1.2,我一直在基于master
并行处理两个不同的分支(称为 A 和 B),并且还创建了第三个分支(称为 M),它合并了这两个分支 - 到目前为止没有非-合并自己的提交。
在对其中一个“主要”分支 (A) 进行了一些工作之后,我检查了合并分支 ( git checkout M
),确认它已经在 B ( git merge B
reports Already up-to-date.
) 中包含所有内容,因此我git merge A
在 A 上引入了新工作。
报告了一些合并冲突,这是预期的。我编辑受影响的文件以删除冲突标记,然后删除git add
它们。到目前为止一切看起来都很正常。
但是当 I 时git commit
,提交消息没有表明这是合并。如果我继续,生成的提交(在 M 分支中)看起来只是一个简单的提交(在我之前的 A 和 B 合并之上);git show
不报告Merge:
父母。在提交之前,.git
包含MERGE_MODE
(空)但没有MERGE_HEAD
.
我没有使用任何特殊的合并策略,所以我想使用默认的 ( recursive
)。无论如何,这看起来不像是一个策略问题:工作树的内容看起来与我期望的完全一样。
如果我在提交之前使用 A 的头部哈希手动创建MERGE_HEAD
,则生成的提交看起来很正常,例如 in gitg
,尽管这当然让我有点紧张。
会发生什么?这是 Git 中的错误吗?在没有创建提交的命令MERGE_HEAD
之后是否有任何理由不创建?git merge
1.8.4.3 似乎具有相同的行为。