【问题标题】:EGit on Eclipse: How to git push --force?Eclipse 上的 EGit:如何 git push --force?
【发布时间】:2012-08-31 09:31:20
【问题描述】:

我的起源/分支与本地分支不同步时遇到了问题,见下文

当我尝试从本地“暂存”分支推送到原始/暂存分支时,我收到“拒绝 - 非快进”错误。

我在 Windows PC 上使用 Eclipse 和 EGit 模块。

another post here 我看到我可以使用“git push --force origin staging”解决我的问题,以用我的本地分支覆盖 origin/staging 分支。

但是,我在 EGit 中看不到该选项,也看不到如何在 EGit 中打开控制台来执行此操作?

有谁知道我是否可以在 EGit 中做到这一点?

好的 - 解决了我自己的问题。看来我遇到了尚未被推回原点/暂存的提交的问题。发现 an overview here 使用“git reset XXX : without --hard”重置分支标记,但保留本地更改以供以后重新提交。

谢谢,杰森

【问题讨论】:

    标签: git egit


    【解决方案1】:

    我刚刚遇到了一个类似的问题,这就是我所做的:

    1. 团队 -> 推送分支 ...
    2. 如果远程分支存在且已分叉,则强制覆盖它

    【讨论】:

      【解决方案2】:

      您确定要覆盖远程分支并丢失所有这些提交吗?

      如果远程分支上的提交不在本地分支中,则应在推送之前将它们合并到本地分支中

      例如,在您当地的staging 分支上:

      git merge origin/staging
      

      但是,如果您确定,那么我建议您检查推送 refspec 上的“强制更新”选项。

      这有点复杂,但 EGit 用户指南在讨论 Pushing to other Repositories 时对其进行了解释,而提到“强制更新”选项的具体部分在 Push Ref Specifications 部分中

      编辑 0:关于您失败的合并,我还没有遇到完全失败而不是导致冲突的合并,它似乎可能是 known issue

      【讨论】:

      • 我同意,pull & merge 是更好的选择,但正如我上面所说,它们失败了?
      【解决方案3】:

      如果您进行强制推送,在修复标头中缺少的 Location: 字符串后,您将丢失添加到 origin/staging 的所有内容,并且您将破坏其他所有人的分支。我不认为那是你想要的。你可能想先做一个拉,然后推就可以了。

      【讨论】:

      • 值得注意的是,pull 会尝试自动合并,如果成功,那么一切都会正常工作。如果没有,用户必须合并自己,提交,然后就可以了。
      • merge失败msg:修订融合4092d67bbfda43148cc078674f2f2738720caade,5df2738720caade,5df2879b3eff2b7862ce6f5aa1f7862ce6f5aa9b使用策略解决策略解决导致:失败。 span>
      • 如果您无法将远程分支合并到本地,正如您的 cmets 所指出的那样,我建议这是您的实际问题和需要解决的新问题,但这可能是一个EGit 中的错误。
      猜你喜欢
      • 2014-11-11
      • 2021-11-19
      • 2012-09-16
      • 2016-07-10
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多