15

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

我的提交历史

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

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

这里的另一篇文章中,我看到我可以使用“git push --force origin staging”解决我的问题,以用我的本地分支覆盖 origin/staging 分支。

但是,我没有看到 EGit 的那个选项,也没有看到如何在 EGit 中打开控制台来执行此操作?

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

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

谢谢,杰森

4

3 回答 3

31

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

  1. 团队 -> 推送分支 <分支名称> ...
  2. 如果远程分支存在并且已经发散,则强制覆盖远程分支
于 2014-12-19T17:56:18.063 回答
5

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

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

例如,在您当地的staging分支机构中:

git merge origin/staging

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

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

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

于 2012-09-06T14:33:35.300 回答
0

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

于 2012-09-06T14:26:26.480 回答