合并后不会出现对主分支的更改

时间:2013-06-03 23:37:36

标签: git branching-and-merging

我有点时间精心策划我的第一个主要分支并合并。发生的事情是我有一个名为'main'的主分支,以及一个从'main'创建名为'branch2'的新分支。几个星期以来,我在几个文件中对'branch2'做了很多更改,并创建了一些新文件。在此期间,我还对'main'做了一些小改动。当合并的时候,我检查了'main'并打电话给git merge branch2。毫不奇怪,它告诉我,我的一个文件中有冲突要解决。因此,我使用git mergetool打开meld,我的差异查看器,以解决差异。在协调这些差异之后,我再次调用git merge branch2,并且合并成功。

问题是它实际上没有成功合并。一些元素合并正确,但'branch2'中的一些更改从未移过,我不明白为什么。我试着打电话给git merge branch2,但现在它只是说“一切都是最新的”。这显然是不对的,因为如果你git checkout branch2,那么你可以看到不在'main'中的变化。

知道可能发生了什么吗?为什么git在没有正确合并时声明“一切都是最新的”?有没有办法强制git再次尝试合并?

1 个答案:

答案 0 :(得分:5)

你做了一个邪恶的合并。运行gitk --all以查看正在发生的情况。你第二次打电话给git merge时出错了。解决冲突后,您需要运行git commit,而不是合并。

但git现在认为您的branch2已合并到main。因此,您需要删除该合并提交。使用gitk获取合并之前的最后一次提交,并在主分支上运行git reset --hard **SHA**以将其重置回该阶段。然后再次合并。