如何解决EGit中的冲突

Sio*_*733 53 eclipse git egit

我在Eclipse v4.3(Kepler)上使用EGit .我想承诺并推动我的改变.我先拉一个,一个文件冲突.手动解决冲突后(本地和远程现在一样),我仍然遇到问题.

以下是每个操作的错误消息:

推送到上游

master:master [拒绝 - 非快进]

无法通过状态:MERGING_RESOLVED进入存储库

标记为合并

无法向索引添加资源无法将资源添加到索引执行add命令期间捕获的异常

硬重置

在"重置为refs/heads/master"期间发生内部错误.执行reset命令时捕获异常.{0}

如何消除冲突并推动我的更改?我究竟做错了什么?

dan*_*ter 77

您使用的是Team Synchronize视图吗?如果是这样就是问题所在.Team Synchronize视图中的冲突解决方案不适用于EGit.相反,您需要使用Git Repository视图.

打开Git透视图.在Git Repository视图中,转到分支本地主,然后右键单击→ 合并 ...

它应该自动选择远程跟踪origin/master.按Merge.

应该表明result:conflict.

打开冲突的文件.他们应该在文件中有一个旧的sk000l >>>> ===== <<<<样式合并冲突.编辑文件以解决冲突,然后保存.

现在在"Git Staging"视图中,它应该在"Unstaged Changes"中显示已更改的文件.右键单击并" 添加到索引 "

在此输入图像描述

重复任何剩余的文件.

现在从'git staging'视图中,提交并推送.由于Git/Eclipse现在知道您已将远程原点更改合并到主服务器中,因此应避免出现非快进错误.

  • 我已经失去了很多时间寻找这个.添加到索引似乎是非常不直观的标记冲突解决方式.所以我只是想与一张图片合作(并为未来留下余地) (4认同)
  • 对我来说更糟。我已经合并、暂存并提交了我的冲突文件,但 Eclipse 不相信我并说仍然存在冲突。 (2认同)

Don*_*kby 24

我也发现解决EGit中的合并冲突很困惑.当我准备好对共享存储库进行一些更改时,我学到的步骤如下:

  1. 右键单击项目,然后选择Team:Commit ....
  2. 检查我的更改以检查我是否未提交任何我意外发生的更改或我忘记的无关更改.在我查看更改时写下提交消息.
  3. 我很乐观,所以我先点击Commit and Push按钮.如果没有其他人推动任何改变,我已经完成了.如果有人,则提交成功,推送被拒绝.
  4. 右键单击该项目,然后选择Team:Pull.如果没有冲突,那么选择Team:Push to Upstream,我就完成了.
  5. 如果存在冲突,请查看包浏览器以查看哪些文件存在冲突.右键单击每个冲突的文件,然后选择Team:Merge Tool.它将显示文件的两个版本中的所有更改,任何冲突都显示为红色.单击按钮以合并所有非冲突更改,然后手动编辑任何红色部分.还有一个按钮显示包含共同祖先的三向合并.
  6. 将更改保存到文件.如果需要,您可以将其与HEAD进行比较,以查看您刚刚提取的更改所做的更改.
  7. 右键单击该文件,然后选择Team:Add to Index告诉EGit您已完成合并该文件.对我来说,这是最不直观的一步,但git命令行也使用add命令来显示合并已完成.
  8. 对任何其他冲突文件重复此操作.
  9. 合并所有文件后,右键单击项目并选择Team:Rebase:Continue Rebase.如果有更多冲突的提交,请回到处理冲突.
  10. 当rebase完成后,运行测试以查看rebase没有破坏任何东西.
  11. 右键单击该项目,然后选择Team:Push to Upstream.


Ton*_*ino 7

本指南对我有帮助 http://wiki.eclipse.org/EGit/User_Guide#Resolving_a_merge_conflict.

更新只是关于我的程序的说明,这是我如何进行:

  1. 提交我的改变
  2. 获取(Syncrhonize工作区)
  3. 使用合并工具(团队 - >合并工具)管理冲突并保存
  4. 将每个文件添加到阶段(团队 - >添加到索引)
  5. 现在,舞台窗口中的"提交消息"预先填充了"合并XXX".您可以保持原样或更改提交消息
  6. 提交和推送

在某些情况下这很危险,但避免使用Git Extension或Source Tree等外部工具非常有用