Git合并没有创建合并提交,没有MERGE_HEAD。

3
在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似乎具有相同的行为。

以下是关于编程的内容,请将其翻译成中文。请仅返回翻译后的文本:(这为什么会有两个踩?) - Jesse Glick
今天我们遇到了同样的问题,但是没有找出问题所在。然而,在其他机器上它却完美地运行。我不明白那些负评是怎么回事。 - pbetkier
我有同样的问题。在别人的电脑上执行相同的合并操作正常,这使得这种行为变得更加奇怪。我使用gedit编写我的提交消息,mergetool是meld,IDE是netbeans,仓库位于btrfs分区上。你有没有任何共同点呢? - thisisnotadisplayname
在关闭IDE的情况下执行相同的操作是可以的。你也能这样做吗? - thisisnotadisplayname
我也使用NetBeans。我现在不记得IDE是否在运行; 通常我使用IDE在开发过程中进行简单的提交,并使用shell执行所有其他Git操作(包括合并提交)。可能它正在后台线程中查看我的工作副本并对其进行某种破坏。 - Jesse Glick
通过 @fred-b 的提示找到了它:NetBeans bug #242625 - Jesse Glick
1个回答

2

我认为你应该使用

git merge --no-ff your_feature_branch

谢谢,但是这个选项的文档(即使合并解决为快进时创建合并提交)似乎不适用于此处,因为合并没有作为快进解决。 - Jesse Glick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接