【问题标题】:Proper push to modified remote repository workflow with egit使用 egit 正确推送到修改后的远程存储库工作流程
【发布时间】:2016-08-01 16:40:48
【问题描述】:

我正试图跳过我的阴影,最终在基本水平上学习 git。像我之前的无数初学者一样,在合并远程更改并“标记为已合并”后尝试推送时,我遇到了可怕的“egit 拒绝非快进”错误。

似乎我已经找到了解决这个问题的方法,但是它很麻烦并且与 eclipse 比较编辑器不兼容。我这样做:

  1. 推送我的更改 - 导致“egit denied non-fast-forward”错误
  2. 拉取更改 - 比较编辑器现在包含 标记。我无法轻松地比较和推送更改,因为比较编辑器的右侧是空的,而左侧包含我的更改以及彼此上方的远程冲突更改,这非常没用。
  3. 通过手动编辑文本痛苦地挑选我想要的部分。

我是否以正确的方式使用 egit?
有没有办法正确使用比较编辑器的两侧?

我想查看将被推送的我的版本,以及在合并期间它与当前远程版本的差异。

【问题讨论】:

    标签: eclipse git egit


    【解决方案1】:

    我不熟悉 egit,但听起来您正在处理合并冲突。我是否正确假设其他人也有权访问您正在处理的分支?可能发生的事情是他们将新的更改推送到分支,这就是导致拒绝的原因。通过拉动,您试图合并一些您必须解决的冲突更改。 Here 是对同一问题的更好解释。

    坏消息是合并冲突总是必须手动解决。好消息是,看起来 egit 提供了一个合并工具来解决这些冲突。 This egit wiki page 可能会帮助您找到您正在寻找的比较工具。基本上,只需选择有冲突的文件,然后选择 Team > Merge Tool .


    如果这不起作用,您总是可以通过使用 git 合并标记( 和 =)自信地解决合并冲突。 Read this 详细说明如何在 Git 中使用它们。基本上,低于<<< 和高于=== 的任何内容都将是您的更改。 === 以下和>>> 以上的代码将是他们的更改。你要么必须选择你想要的那一面,或者你可以进一步定制它。通过删除所有内容并自己重新编写代码。

    这是一个例子。这是您在解决合并冲突时可能会看到的内容。顶部向您显示本地 HEAD 的提交,即您的提交版本。而底部,=== 下方显示了在 origin/master 的提交,即您刚刚拉入的版本。

    <<<<<< HEAD:test.html
    <h1>This is my version</h1>
    ======
    This is their version
    >>>>>> origin/master:test.html
    

    要只保留你的版本,你可以用这个替换整个块。这就像箭头和等号给你一个选择。你想要顶部(你的)还是底部(他们的)?

    <h1>This is my version</h1>
    

    或者,也许您想要两者的结合。在这里,您将保留您的 &lt;h1&gt; html 标记,但使用它们的文本。

    <h1>This is their version</h1>
    

    我希望这可以帮助您更轻松地解决合并冲突。如果你想了解更多关于 Git 的知识,我总是推荐git-scm

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多