EclipseGit放弃合并时的更改

EclipseGit放弃合并时的更改,eclipse,git,merge,egit,Eclipse,Git,Merge,Egit,我本来打算把这个贴在这个问题上的。因为它是第一个出现在谷歌上的。但我认为最好把这个问题作为新问题发布(毕竟这不是一个论坛) 首先,我将向您展示这张图片,以了解分支状态(显然,真正的提交消息已被替换为隐私): 因此,在追踪每一次犯罪后,我发现这是我的同事(最上面的那个)最后一次合并。尽管如此,我还是不知道怎么会出错大提交和文件冲突提交之间的所有更改均已丢失 正如您可能已经注意到的,绿线代表我同事的本地分支,橙色/棕色代表修补程序分支,蓝色代表我的分支 因此,在我解决了cb2ff5f上的冲突后,我

我本来打算把这个贴在这个问题上的。因为它是第一个出现在谷歌上的。但我认为最好把这个问题作为新问题发布(毕竟这不是一个论坛)

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

因此,在追踪每一次犯罪后,我发现这是我的同事(最上面的那个)最后一次合并。尽管如此,我还是不知道怎么会出错大提交和文件冲突提交之间的所有更改均已丢失

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

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

同时,我的搭档还在做新的改变,所以他把他的工作树放在了一棵树上。我通知他,我合并了他的更改,并要求他将其删除。他不能这样做,因为一些脏文件与远程分支(有我的合并)冲突。他使用EclipseGit扩展作为git客户机。正如一些人可能知道的,在这种情况下,Eclipse显示了三个选项:重置那些文件(放弃您的更改)、隐藏它们或提交它们。他选择了把他们干掉。这就是commit3c684e1(使其余文件变脏)。然后,不知何故,最终的合并提交放弃了远程分支中提交的所有更改,包括我的合并提交

这是EclipseGit的bug吗?我想不出别的了

更新:我发现了一些有趣的事情。我执行了
git日志-p3c684e112ab983
git日志-p8095107 12ab983
。这两个输出都表明我提交的更改已正确合并。但是,当我运行
git checkout 12ab983
。。。变化并不存在。所以,Git好像在撒谎


更新2:我试图重现该问题。我从commit
8095107
创建了一个名为
branch\u mine
的本地分支,并为
137be26
创建了另一个名为
branch\u other
(我的合作伙伴在解决冲突之前的大提交)。我重新创建了partner在分支机构上所做的操作。我修改了一些文件,使树处于脏状态。我试图与branch_mine和Eclipse合并,因为我修改了一些冲突的文件。我提交了这些文件,然后再次尝试合并。它成功了,没有任何冲突。此外,我的更改在新的合并提交中也存在。所以这一定是我搭档的问题。只是我不知道到底是什么,我担心它可能会再次发生。这可能是与文件系统的同步问题吗?另外,值得一提的是,虽然他使用EGit作为Git客户机,但实际上他是在用visualstudio代码进行编码。因此,这两个文件之间可能存在同步问题,导致合并提交实际上是谎言。它既神奇又可怕。

你可以找到它。你说的是“我同事的本地分支”,所以屏幕截图显示的是你同事的本地Git存储库的历史,而不是你的本地存储库的历史,对吗?你有没有试图重现这个问题?@howlger这是我的回购观点。绿线更像是我同事的分支从我分支出来的路径。我还没有试着复制这个问题。但我发现了一些有趣的事情。我用detailsEclipse更新了这个问题,它有自己的Git Java实现(JGit),而VisualStudio代码只是委托给命令行。在Eclipse之外使用Git之后,应该在Git Staging或Git Repositories视图中按下刷新按钮。也许这就是原因。你知道你的同事在Eclipse之外做了什么操作吗?@howlger我认为不是这样的。他根本不在VS中使用Git。可能他也没有安装Git命令行工具。这就解释了为什么他使用Eclipse作为Git客户机。真奇怪。我唯一能确定的是commit
12ab983
在某种程度上已损坏