48

我已经启动了 Eclipse EGit。在某些情况下,它确实并不全面。

我有本地文件,例如 pom.xml 已更改。在 git 服务器上,此文件已更改。我愿意pull,EGIt 说:

签出与文件冲突:

即拉停(fetch已完成,但未完成merge),没关系。然而接下来是糟糕的经历。

我同步工作区,将我的更改放在一边,并使其与 FETCH_HEAD 相同。但EGit不想继续。我用 HEAD 版本替换文件。但是EGit仍然不想继续。

解决冲突后,EGit 应该使用什么标准的预期用户操作?

更新:

added to index,然后marked as Merged->pull仍然无法通过。
当我选择Merge我得到对话框

在此处输入图像描述

我无法提交该文件,因为它不在已更改文件的列表中。

4

10 回答 10

59

情况:

  • 您有本地未提交的更改
  • 您从主存储库中提取
  • 您收到错误“签出与文件冲突:xy”

解决方案:

  • 暂存并提交(至少)文件 xy
  • 再拉一次
  • 如果自动合并是可能的,一切都很好。
  • 如果不是,则拉取合并文件并插入合并冲突标记(<<<<<<,>>>>)
    • 手动编辑冲突文件
  • 提交并推送
于 2014-03-27T12:13:03.193 回答
29

这是我解决问题的方法:

  1. 右键单击本地未提交更改的文件夹
  2. 单击团队 > 高级 > 假设未更改
  3. Pull来自大师。

更新:

正如Hugo Zuleta正确指出的那样,在应用它时应该小心。他说它最终可能会说分支是最新的,但没有显示更改,导致分支不同步。

于 2014-05-13T18:11:48.930 回答
23
  1. 关闭冲突错误对话框后;在 Project Explorer 中,右键单击项目的头部 -> Team -> Stashes -> Stash Changes
  2. 为您的存储输入一个名称。例如“冲突”
  3. 再次尝试拉动。希望这次没有错误。
  4. 在 Git Repository 视图中,展开您的存储库 -> Stashed Commits
  5. 右键单击您在步骤 2 中创建的存储 -> 应用存储更改
  6. 如果它不能自动合并它,这会调出合并工具。
  7. 手动解决文件中的合并冲突。
  8. 右键单击文件编辑器 -> 团队 -> 添加到索引
  9. 如果您还没有准备好提交文件或者只是不希望它在索引中,请右键单击文件编辑器 -> 团队 -> 从索引中删除。
  10. 清理:在 Git 存储库视图中,右键单击您在步骤 2 中创建的存储 -> 删除存储提交

您的本地工作目录文件应该被合并

于 2015-05-21T21:50:30.113 回答
1

如果“.settings/language.settings.xml”或任何此类文件出现错误,您不需要 git。

  1. 团队 -> 提交 -> 暂存文件列表,检查是否存在不需要的文件, -> 右键单击​​每个 -> 从索引中删除。
  2. 从 UnStaged 文件列表中,检查是否存在不需要的文件,-> 右键单击​​每个 -> 忽略。

现在,如果暂存文件列表为空,并且未暂存文件列表中的所有文件都标记为已忽略。你可以拉。否则,请遵循其他答案。

于 2018-07-14T02:24:19.913 回答
0

我想最好的方法是这样的:

  1. 将所有更改存储在单独的分支中。
  2. 然后在本地主机上进行硬重置。
  3. 然后从本地创建的分支中合并您的更改
  4. 然后提交并推送您的更改。

这就是我如何解决我的问题,无论何时发生。

于 2016-01-20T20:26:41.620 回答
0

从 Eclipse 获得丑陋的 CheckoutConflictException 后,Eclipse-Merge Tool 按钮被禁用。

Git 需要将所有文件添加到索引中才能启用合并。

因此,要合并您的更改并提交它们,您需要先将文件添加到索引“添加到索引”中,然后在没有“推送”的情况下“提交”它们。然后您应该在 Eclipse 中看到一个待处理的拉取和一个待处理的推送请求。您可以在一个向上箭头和一个向下箭头中看到这一点。

如果所有冲突文件都在提交中,您可以再次“拉”。然后你会看到类似的东西:

\< < < < < < < HEAD 服务器版本 \======= 本地版本 > > > > > > > ....git 的分支'master'

然后,您可以通过合并工具更改它,该工具现在已启用,或者直接在文件中手动进行合并。在最后一步中,您必须将修改后的文件再次添加到索引中并“提交并推送”它们。

检查完毕!

于 2018-10-11T07:30:08.330 回答
0

正确的解决方案是@Jojo.Lechelt 提供的解决方案。

但是,如果您出于任何原因不想提交并且仍想拉取更改,则可以将更改保存在其他地方,将冲突的文件替换为 HEAD 修订版,然后拉取。

稍后您可以再次粘贴您的更改并将其与 HEAD 进行比较,并将其他人的更改合并到您的文件中。

于 2019-04-13T06:13:56.887 回答
0

右键单击项目并选择 [replace with] -> Head Revision 。现在选择在当前分支中拉取更改或从上游拉取更改。

于 2019-06-04T10:08:08.180 回答
0

在 Eclipse 中:-

  1. 右键单击->单击“添加到索引”

在暂存区添加冲突文件

  1. 右键单击->单击提交

在本地存储库中添加冲突文件

您将获得所有更改(远程存储库和本地存储库中的更改)

Head( <<<<<< HEAD ) 中提到的更改是您的更改,分支中提到的更改( >>>>>>> branch ) 是其他人更改,您可以相应地更新文件。

  1. 右键单击->单击添加到索引

  2. 右键单击-> 提交并推送

于 2020-07-20T12:38:15.273 回答
0

我对这个问题有完全不同的经验。当我拉动时(我的暂存区很干净!),我在拉动后看到很多暂存文件,我没有更改或添加,所以我通过替换头部再次清理暂存区。再次尝试拉后,我再次遇到了同样的问题,现在我做了以下操作:

  • 隐藏的更改
  • 从您的存储库中关闭在另一个程序中打开的任何文件
  • 尝试拉

希望这能解决您的问题。

谢谢

于 2021-03-03T14:36:50.283 回答