首页 > 解决方案 > Eclipse EGit 在合并时丢弃更改

问题描述

我实际上打算在这个SO question 上发布这个。因为它是第一个出现在 Google 上的。但我认为最好将此作为新问题发布(毕竟不是论坛)。

首先,我将向您展示这张图片以了解分支状态(显然真实的提交消息已被替换为隐私):

做噩梦

因此,在追踪每一次提交后,我发现有罪的是我的同事(最上面的那个)进行的最后一次合并。不过,我不知道怎么可能出错。大型提交和具有冲突文件的提交之间的所有更改都丢失了。

您可能已经注意到,绿线代表我同事的本地分支,橙色/棕色是修补程序分支,蓝色是我的。

因此,在解决cb2ff5f上的冲突后,我合并了修补程序分支更改,然后更新了相应文件的版本号。

同时,我的伙伴仍在进行新的更改,因此他的工作树处于脏状态。我通知他我合并了他的更改并要求他撤消它们。他不能这样做,因为一些脏文件与远程分支(有我的合并)冲突。他使用 Eclipse EGit 扩展作为 git 客户端。有些人可能知道,在这种情况下,Eclipse 显示了三个选项:重置这些文件(放弃您的更改)、存储它们或提交它们。他选择了承诺。这就是提交3c684e1(使其余文件变脏)。然后,不知何故,最终的合并提交丢弃了远程分支中提交的所有更改,包括我的合并提交。

这是 Eclipse EGit 的错误吗?我想不出别的了。

更新:我发现了一些有趣的东西。我执行了git log -p 3c684e1 12ab983and git log -p 8095107 12ab983。两个输出都显示我提交的更改已正确合并。但是,当我运行时git checkout 12ab983……更改不存在。所以,看起来Git 在撒谎

更新 2:我试图重现该问题。我创建了一个以branch_minecommit命名的本地分支8095107和另一个以branch_other137be26在我的冲突解决之前来自我的合作伙伴的大型提交)命名的分支。我重新创建了合作伙伴所做的branch_other. 我修改了一些文件,使树处于脏状态。我试图与 branch_mine 合并并且 Eclipse 抱怨因为我修改了一些冲突的文件。我提交了这些文件,然后再次尝试合并。它有效,并且没有任何冲突。此外,我的更改存在于新的合并提交中。所以这一定是我伴侣的问题。只是我不知道究竟是什么,我担心它可能会再次发生。会不会是文件系统的同步问题?另外,值得一提的是,虽然他使用 EGit 作为 Git 客户端,但他实际上是在 Visual Studio Code 中进行编码。所以,也许这两者之间存在同步问题,导致合并提交实际上是lie。这既令人惊奇又令人恐惧。

标签: eclipsegitmergeegit

解决方案


推荐阅读