在Linux上使用Git 1.8.1.2时,我在两个不同的基于master的分支(称为A和B)上并行工作,并创建了第三个合并这两个分支的分支(称为M) - 到目前为止没有自己的提交。 在其中一个“主要”分支(A)上进行一些工作后,我检出合并分支(git checkout M),验证它已经拥有B中的所有内容(git merge B报告Already up-to-date.),所以我git merge A拉取了A上的新工作。 这时会报告一些合并冲突,这是预期的。 我编辑受影响的文件以删除冲突标记,然后git add它们。 到目前为止一切正常。 但是当我git commit时,提交消息并没有指示这是一个合并。 如果我继续,结果的提交(在M分支中)看起来只是一个简单的提交(位于我之前合并的A和B之上); git show不报告Merge: parents。 在提交之前,.git包含MERGE_MODE(空),但没有MERGE_HEAD。 我没有使用任何特殊的合并策略,因此我认为默认值(递归)正在使用。 无论如何,这看起来不像是策略问题:工作树的内容看起来完全符合我的预期。 如果我手动创建MERGE_HEAD并将其哈希到提交之前的A头部,则生成的提交在gitg中看起来正常,尽管当然这让我有点紧张。 到底是怎么回事? Git中是否存在Bug - git merge命令没有创建提交后,有没有任何理由不创建MERGE_HEAD? 1.8.4.3似乎具有相同的行为。