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

Jas*_*son 15 git egit

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

我的提交历史

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

我在Windows PC上使用带有EGit模块的Eclipse.

另一篇文章中我看到我可以使用"git push --force origin staging"来解决我的问题,以便使用我的本地分支覆盖origin/staging分支.

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

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

好的 - 解决了我自己的问题.看来我在提交的问题上没有被推回原点/分期.在这里找到关于使用"git reset XXX:without --hard" 的概述,它重置了分支标记,但保留了本地更改以供以后重新发送.

谢谢你,杰森

小智 28

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

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


chr*_*ney 5

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

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

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

git merge origin/staging
Run Code Online (Sandbox Code Playgroud)

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

这有点复杂,但是EGit用户指南在讨论推送到其他存储库时解释了它,并且提到"强制更新"选项的特定部分在推送参考规范部分中

编辑0:关于你失败的合并,我还没有遇到直接失败而不是导致冲突的合并,看起来它可能是一个已知的问题


Kar*_*ldt 0

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