重置后拒绝git push force --hard

时间:2018-10-24 08:42:02

标签: git

我们的分支模型说master上的分支应该是当前的生产状态。

偶然地,一个开发版本从developed合并到master中,并由我们的新同事之一推动。因此,在master上,我们的生产状态不再存在。我想还原此内容以应用修补程序,但是失败。

要知道所有提交,我首先提取了当前的master

git checkout master
git pull

然后,如本thread中所述,我尝试使用重置我的本地master

git reset --hard <versiontag>
git push --force origin master

但是由于“未来”提交,强制推送被拒绝了。

Total 0 (delta 0), reused 0 (delta 0)
To [URL OF MY REPO]
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[URL OF MY REPO]'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

是的,我知道有提交。我想将它们从master中删除,因为它们不属于那里(不过,直到develop打算合并到master中为止)

如何成功地将master分支还原到当前标签,然后将其推送到远程标签或以其他方式询问-如何摆脱master分支中错误的合并提交?

1 个答案:

答案 0 :(得分:0)

如果要执行resetpush --force,则需要更改服务器上的设置。在普通的git服务器上,请确保未设置以下配置选项:

receive.denyNonFastForwards
receive.denyDeletes

在其他服务器上,例如github,gitlab,bitbucket,这可以通过网络界面完成。

您的其他选择是创建一个新的提交,以还原不需要的更改。 git revert将帮助您做到这一点。如果其他人已经撤消了您要还原的提交,那将是更好的选择。