eclipse - Eclipse EGit 在合并时丢弃更改
问题描述
我实际上打算在这个SO question 上发布这个。因为它是第一个出现在 Google 上的。但我认为最好将此作为新问题发布(毕竟不是论坛)。
首先,我将向您展示这张图片以了解分支状态(显然真实的提交消息已被替换为隐私):
因此,在追踪每一次提交后,我发现有罪的是我的同事(最上面的那个)进行的最后一次合并。不过,我不知道怎么可能出错。大型提交和具有冲突文件的提交之间的所有更改都丢失了。
您可能已经注意到,绿线代表我同事的本地分支,橙色/棕色是修补程序分支,蓝色是我的。
因此,在解决cb2ff5f上的冲突后,我合并了修补程序分支更改,然后更新了相应文件的版本号。
同时,我的伙伴仍在进行新的更改,因此他的工作树处于脏状态。我通知他我合并了他的更改并要求他撤消它们。他不能这样做,因为一些脏文件与远程分支(有我的合并)冲突。他使用 Eclipse EGit 扩展作为 git 客户端。有些人可能知道,在这种情况下,Eclipse 显示了三个选项:重置这些文件(放弃您的更改)、存储它们或提交它们。他选择了承诺。这就是提交3c684e1(使其余文件变脏)。然后,不知何故,最终的合并提交丢弃了远程分支中提交的所有更改,包括我的合并提交。
这是 Eclipse EGit 的错误吗?我想不出别的了。
更新:我发现了一些有趣的东西。我执行了git log -p 3c684e1 12ab983
and git log -p 8095107 12ab983
。两个输出都显示我提交的更改已正确合并。但是,当我运行时git checkout 12ab983
……更改不存在。所以,看起来Git 在撒谎
更新 2:我试图重现该问题。我创建了一个以branch_mine
commit命名的本地分支8095107
和另一个以branch_other
(137be26
在我的冲突解决之前来自我的合作伙伴的大型提交)命名的分支。我重新创建了合作伙伴所做的branch_other
. 我修改了一些文件,使树处于脏状态。我试图与 branch_mine 合并并且 Eclipse 抱怨因为我修改了一些冲突的文件。我提交了这些文件,然后再次尝试合并。它有效,并且没有任何冲突。此外,我的更改存在于新的合并提交中。所以这一定是我伴侣的问题。只是我不知道究竟是什么,我担心它可能会再次发生。会不会是文件系统的同步问题?另外,值得一提的是,虽然他使用 EGit 作为 Git 客户端,但他实际上是在 Visual Studio Code 中进行编码。所以,也许这两者之间存在同步问题,导致合并提交实际上是lie。这既令人惊奇又令人恐惧。
解决方案
推荐阅读
- python - Django 2.2 使迁移失败,并出现神秘的 (AttributeError: 'Node' object has no attribute 'ancestors') 消息,而 2.1 成功
- sql-server - 如何在 SQL 的子查询中使用动态参数
- python - 如何使用 discord.py 检查默认的个人资料图片?
- qt - 如何使用 QT 从 QML 获取数据到 C++?
- c# - 删除引用的行后外键未设置为空
- java - 使用 BPEL 流程时出现 org/eclipse/swt/custom/TableTree 错误?
- c# - 对象属性上的 SelectMany 然后将结果保存回属性会导致 stackoverflow
- azure - 使用 Azure 函数调用的输出 (JSON) 在 ADFv2 中调用存储过程。传递类型,而不是 JSON 字符串?
- python - 大熊猫中的一行选择
- android - Android 的 WebViewClient.shouldInterceptRequest() 仅在第一次调用