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