我有点时间精心策划我的第一个主要分支并合并。发生的事情是我有一个名为'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再次尝试合并?
答案 0 :(得分:5)
你做了一个邪恶的合并。运行gitk --all
以查看正在发生的情况。你第二次打电话给git merge
时出错了。解决冲突后,您需要运行git commit
,而不是合并。
但git现在认为您的branch2
已合并到main
。因此,您需要删除该合并提交。使用gitk获取合并之前的最后一次提交,并在主分支上运行git reset --hard **SHA**
以将其重置回该阶段。然后再次合并。