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 不想继续的主要内容,如果未能解决你的问题,请参考以下文章