关于Eclipse的EGit:如何git push --force?

时间:2012-09-06 14:17:26

标签: git egit

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

My commit history

当我尝试从我的本地“staging”分支推送到origin / staging分支时,我得到“被拒绝 - 非快进”错误。

我在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”重置分支标记,但保留本地更改以供以后重新发送。

谢谢,杰森

3 个答案:

答案 0 :(得分:24)

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

  1. 团队 - >推分支......
  2. 强制覆盖远程分支(如果存在且已分叉)

答案 1 :(得分:5)

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

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

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

git merge origin/staging

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

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

编辑0:关于您的合并失败,我还没有遇到直接失败的合并而不是导致冲突,看起来它可能是known issue

答案 2 :(得分:0)

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