Eclipse EGit Checkout 与文件冲突:- EGit 不想继续

Posted

技术标签:

【中文标题】Eclipse EGit Checkout 与文件冲突:- EGit 不想继续【英文标题】:Eclipse EGit Checkout conflict with files: - EGit doesn't want to continue 【发布时间】:2013-08-05 16:35:30 【问题描述】:

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

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

结帐与文件冲突:

即停止(fetch 完成,但不是 merge),没关系。然而接下来是糟糕的体验。

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

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

更新:

added to index,然后marked as Merged -> pull 还是过不去。 当我选择 Merge 时,我得到了对话框

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

【问题讨论】:

您是否通过上下文菜单执行了 Add to Index,类似于 CVS/SVN 中已知的 mark as merged?之后我认为你必须做一个提交,当你做了merge或者如果你做了rebase你应该做Rebase > continue而不是提交,它执行你当前合并的提交和如果有更多提交变基,则变基下一个。 我不能离开这个州。我走错了路,EGit 无济于事。 是的,该对话框是我的最爱之一 - 不是 ;) 只需选择任何选项,因为我不确定它是否重要。但之后提交文件,然后进行拉取。这能解决问题吗?因为那样你应该能够通过合并工具解决冲突,而不是看到这个对话框。 我制作了一个视频,展示了您通常如何避免此冲突对话框:youtu.be/YjVLGMlHJPk您尝试这样做,对吗?那么您能否发布git status 的输出或显示git staging view 的屏幕截图或两者兼而有之? 【参考方案1】:

情况:

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

解决方案:

暂存并提交(至少)文件 xy 再次拉动 如果可以自动合并,一切正常。 如果不是,则拉取合并文件并插入合并冲突标记(>>>) 手动编辑冲突文件 提交并推送

【讨论】:

也许值得添加关于stash的评论?【参考方案2】:

这是我解决问题的方法:

    右键单击本地有未提交更改的文件夹 单击团队 > 高级 > 假定未更改 Pull 来自主人。

更新:

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

【讨论】:

然而,使用它时必须小心。最终可能会说分支是最新的,但未显示更改,从而导致分支不同步。 从来没有想过这样的危险,是的,你是对的。我最好用这些信息更新我的答案。 如何使 EGit 再次同步并找到这些更改? 对不起@PaulVerest,不知道该怎么做。 ://【参考方案3】:
    关闭冲突错误对话框后;在 Project Explorer 中,右键单击项目的头部 -> Team -> Stashes -> Stash Changes 为您的存储输入一个名称。例如。 “冲突” 再次尝试拉动。希望这次没有错误。 在 Git 存储库视图中,展开您的存储库 -> Stashed Commits 右键单击您在第 2 步中创建的存储 -> 应用存储的更改 如果无法自动合并,这会调出合并工具。 手动解决文件中的合并冲突。 右键文件编辑器->团队->添加到索引 如果您还没有准备好提交文件或者只是不希望它在索引中,请右键单击文件编辑器 -> 团队 -> 从索引中删除。 清理:在 Git 存储库视图中,右键单击您在步骤 2 中创建的存储 -> 删除存储提交

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

【讨论】:

在第 5 步之后,我刚刚收到消息:出现问题:应用隐藏提交的更改“......”遇到了问题。由于“应用隐藏的更改导致冲突”,应用隐藏的提交“....”失败了多么无用的工具......根本没有合并对话框。只是愚蠢的消息。【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

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

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

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

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

\ > > > > > > ....git的分支'master'

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

检查完毕!

【讨论】:

【参考方案7】:

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

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

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

在 Eclipse 中:-

    右键->点击“添加到索引”

在暂存区添加冲突文件

    右键->点击提交

在本地仓库中添加冲突文件

    拉动

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

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

    右键->点击添加到索引

    右键 -> 提交并推送

【讨论】:

【参考方案10】:

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

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

希望这能解决您的问题。

谢谢

【讨论】:

以上是关于Eclipse EGit Checkout 与文件冲突:- EGit 不想继续的主要内容,如果未能解决你的问题,请参考以下文章

Egit 工作目录与 Eclipse 中的项目

Eclipse EGit 在 Pulls 后更改文件夹名称

Egit 已安装(与 Juno 一起提供),但根本不显示

如何让 EGIT 识别一个 Eclipse 项目中的两个 Git 存储库?

eclipse egit 更新未提交文件的方法

eclipse 安装egit插件