我知道有人问过类似的问题,但我相信他们的问题的原因是不同的。我做了一个硬重置,因为我搞砸了我的代码非常糟糕
git reset --hard 41651df8fc9
我做了一些更改,我做了一些提交,现在我正在尝试将所有这些提交推送到服务器中,我得到以下错误:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]'
Git建议做一个git pull,这就是其他人向其他用户建议的内容。但是,我相信git pull会将我当前的代码与我不再需要的代码合并(头部修订版)。我怎么能推动并忘记我之前的版本/版本?
git push -f
,如果你有权限,但这将搞砸任何从该回购中撤出的人,所以要小心。
如果拒绝,并且您可以访问服务器,如下面的canzar所述,您可以在服务器上允许此操作
git config receive.denyNonFastForwards false
如果您是唯一从事该项目的人,您可以做的是:
git checkout master
git push origin +HEAD
这会将origin / master的提示设置为与master相同的提交(因此删除41651df和origin / master之间的提交)
做就是了
git pull origin [branch]
然后你应该能够推动。
如果您已经自己提交并且没有将其推送到分支,请尝试
git pull --rebase origin [branch]
然后你应该能够推动。
'remote:错误:拒绝非快进refs / heads / master(你应该先拉)
该消息表明服务器上有一个拒绝快速推送的钩子。是的,它通常不推荐并且是一个很好的防守,但由于你是唯一一个使用它并且你想进行强制推动的人,请联系repo的管理员以允许通过暂时删除来执行非快速推送挂钩或给你许可钩子这样做。
我为解决这个问题所做的是:
git pull origin [branch]
git push origin [branch]
还要确保通过运行指向正确的分支:
git remote set-url origin [url]
对于我的工作,只需逐个运行这些命令
git pull -r origin master
git push -f origin your_branch
我执行了以下步骤来解决此问题。在给我错误的分支上:
git pull origin [branch-name]<current branch>