我在Eclipse v4.3(开普勒)上使用EGit。我想承诺并推动我的改变。我先拉,一个文件冲突。在手动解决冲突之后(本地和远程现在一样),我仍然遇到问题。
以下是每项操作的错误消息:
推送到上游
master:master [拒绝 - 非快进]
拉
无法使用州:MERGING_RESOLVED
进入存储库
标记为合并
无法向索引添加资源无法将资源添加到索引执行add命令期间捕获的异常
硬重置
在“重置为refs / heads / master”期间发生内部错误。 执行reset命令时捕获异常。 {0}
如何删除冲突并推送我的更改?我做错了什么?
答案 0 :(得分:74)
您使用的是团队同步视图吗?如果是这样的话就是问题所在。团队同步视图中的冲突解决方案不适用于EGit。相反,您需要使用Git Repository视图。
打开Git视角。在Git Repository视图中,转到 Branches → Local → master ,然后右键单击→ Merge ...
应自动选择远程跟踪→origin/master
。按合并。
应显示result:conflict
。
打开冲突的文件。他们应该有一个旧的sk000l>>>> =====<<<<样式合并文件中的冲突。编辑文件以解决冲突,然后保存。
现在进入Git Staging'在视图中,它应该在“未分级更改”中显示已更改的文件。右键点击' 添加到索引'
重复任何剩余的文件。
现在来自' git staging'查看,提交和推送。由于Git / Eclipse现在知道您已将远程原点更改合并到主服务器中,因此应避免出现非快进错误。
答案 1 :(得分:23)
我也发现解决EGit中的合并冲突很困惑。当我准备好对共享存储库进行一些更改时,我学到的步骤如下:
答案 2 :(得分:6)
本指南对我有帮助 http://wiki.eclipse.org/EGit/User_Guide#Resolving_a_merge_conflict
已更新 关于我的程序只是一个注释,这就是我的进展:
在某些情况下这很危险,但避免使用Git Extension或Source Tree等外部工具非常有用
答案 3 :(得分:3)
我知道这是一篇较旧的帖子,但我遇到了类似的问题,并且能够解决它,所以我想我会分享。
(更新:如下面的评论中所述,此答案是在将#34; git stash"功能纳入eGit之前。)
我做的是:
希望有所帮助。
答案 4 :(得分:1)
只需右键点击冲突的文件,然后在解决冲突后将其添加到索引中。
答案 5 :(得分:0)
要解决冲突,请使用Git stash保存未提交的更改;然后下拉远程存储库更改集;然后弹出您的本地存储以重新应用您未提交的更改。
在Eclipse v4.5(Mars)中存储更改(一个相对较新的添加,不在之前的EGit中)我这样做:右键单击Git控件中的顶级Eclipse项目,选择团队,选择 Stashes ,选择 Stash Changes ; 将打开一个对话框以请求存储提交消息。
您必须使用顶级项目的上下文菜单!如果我右键单击Git控制的项目中的目录或文件,我没有得到适当的上下文菜单。
答案 6 :(得分:0)
这种方法类似于" stash"解决方案,但我认为可能会更清楚:
答案 7 :(得分:0)
由于这是我们经常遇到的问题,下面是解决问题的步骤。
打开Git视角。在Git Repository视图中,转到 在分支→本地→主上,右键单击→合并 ...
应自动选择远程跟踪→* origin / master。按合并。
在Eclipse中启动阶段视图。
双击最初显示冲突的文件
在冲突合并视图中,通过从左到右选择所有非冲突+冲突更改的左箭头,您可以解决所有冲突。
保存合并文件。
做一个团队→再次从Eclipse中撤出。
你们都准备好了:)
答案 8 :(得分:0)
几年前,在Eclipse中(通过暂存视图)解决冲突的较早过程似乎更加直观,因此该工具不再像以前那样起作用,或者我记得解决合并的过程 SVN 存储库中发生冲突。无论如何,在有冲突的文件上单击鼠标右键时,都有一个漂亮的“标记为合并”菜单选项。
快进到2019年,我正在Eclipse(v4.11)中使用“ Git Staging ”视图。实际上,我正在使用 STS (Spring Tool Suite 3.9.8),但我认为Git Staging视图是用于处理基于Java / Spring的项目的标准Eclipse插件。我会分享以下方法,以防其他人感到不适,并且因为我变得疲倦或从GIT命令行解决合并冲突。 ;-)
因为我记得的功能现在已经不存在(或者可能与当前版本的GIT和Eclipse有所不同),所以下面是我现在要使用GIT存储库通过Eclipse解决合并冲突的当前步骤。对我来说,这似乎是最直观的。显然,从这里的响应数量可以明显看出,有许多种方法可以解决合并冲突。也许我只需要使用其三向合并工具切换到JetBrains IntelliJ 。
注意:由于菜单选项不直观,因此许多事情可能会引起误解。例如,如果您已在本地保存任何更新,并尝试重新打开冲突的文件以确认并且所做的更改已保留,则由于打开了原始冲突状态而不是您的更改,可能导致混乱。
但是将文件添加到索引后,您将在那里看到更改。
我还建议当您引入导致合并冲突的更改时,请先“存储”本地更改,然后再将其存储。至少作为保护,至少在使用GIT时,不允许您进行外部更改,除非您还原或存储更改。如果更改不重要,则放弃并恢复为HEAD状态,否则将其隐藏。
最后,如果仅更改一个或两个文件,则考虑将它们拉入单独的文本文件作为参考,然后还原到HEAD,然后在进行更改时手动更新文件。
答案 9 :(得分:-1)
GIT具有解决冲突的最恼人的方式(与svn不同,在svn中,您可以简单地比较并进行更改)。我强烈认为git具有复杂的冲突解决过程。如果要解决,我只需要从GIT中获取另一个代码作为新代码,添加我的更改并提交即可。它简单而不是面向过程的。