3

在 Linux 上使用 Git 1.8.1.2,我一直在基于master并行处理两个不同的分支(称为 A 和 B),并且还创建了第三个分支(称为 M),它合并了这两个分支 - 到目前为止没有非-合并自己的提交。

在对其中一个“主要”分支 (A) 进行了一些工作之后,我检查了合并分支 ( git checkout M),确认它已经在 B ( git merge Breports 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 merge1.8.4.3 似乎具有相同的行为。

4

1 回答 1

2

我相信你应该使用

git merge --no-ff your_feature_branch
于 2013-11-14T19:23:50.373 回答