我们的分支模型说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
分支中错误的合并提交?
答案 0 :(得分:0)
如果要执行reset
和push --force
,则需要更改服务器上的设置。在普通的git服务器上,请确保未设置以下配置选项:
receive.denyNonFastForwards
receive.denyDeletes
在其他服务器上,例如github,gitlab,bitbucket,这可以通过网络界面完成。
您的其他选择是创建一个新的提交,以还原不需要的更改。 git revert
将帮助您做到这一点。如果其他人已经撤消了您要还原的提交,那将是更好的选择。