删除git中提交的更改

删除git中提交的更改,git,visual-studio-2019,pull-request,git-reset,Git,Visual Studio 2019,Pull Request,Git Reset,我不小心将更改推到了我的开发分支上,现在我想删除它。不还原,但完全删除它们。 由于对Dev分支设置了约束,我无法直接提交到该分支,而是通过pull请求提交。 以下是我的步骤: 我基于Dev创建了一个名为Dev_Reset的新分支。 然后: 然后将Dev_Reset分支推送到远程repo。但是,当我创建一个拉请求时,没有什么不同之处需要合并,因为它说Dev_Reset和Dev之间没有区别。如果我查看Visual Studio中分支的历史记录,我会发现本地Dev和Dev_Reset的头都位于comm

我不小心将更改推到了我的开发分支上,现在我想删除它。不还原,但完全删除它们。 由于对Dev分支设置了约束,我无法直接提交到该分支,而是通过pull请求提交。 以下是我的步骤: 我基于Dev创建了一个名为Dev_Reset的新分支。 然后:

然后将Dev_Reset分支推送到远程repo。但是,当我创建一个拉请求时,没有什么不同之处需要合并,因为它说Dev_Reset和Dev之间没有区别。如果我查看Visual Studio中分支的历史记录,我会发现本地Dev和Dev_Reset的头都位于commit 4db52f3,但由于某种原因,我无法将其推送到我的主Dev分支

另外,在history overview中,我仍然可以看到我想使用git reset xxx-hard命令删除的所有提交,这些命令列在标题上方。没有其他分支指向我要删除的任何提交

我知道git重设的危险性,但目前我是唯一一个在这个分支上工作的人。 如何使所有这些提交消失,并将我的主开发分支重置为正确的提交

谢谢

2020年3月9日编辑
正如Igal S和LeGEC在下面建议的那样,我必须调整开发分支的设置,然后才能在这里应用我的更改。我们注意到了其他同事获取分支的担忧,我们的团队已经得到了通知。目前,最近还没有人撤销各自的分支机构。谢谢你的帮助

从远程分支删除这些更改的唯一方法是执行git重置,就像您所做的那样,然后强制将它们推送到远程分支

假设您的策略允许这样做,并且您有这样做的权限。您正在为远程git使用哪个系统


拉请求仅用于将提交从分支添加到另一个分支。我不熟悉任何允许使用拉请求删除提交的系统,即重写历史记录

擦除错误的提交需要重写历史记录,您不能通过拉请求来完成

如果确实必须删除这些提交:您必须要求具有管理员权限的人员临时禁用开发分支上的策略,强制推送,然后重新启用该策略。 这也意味着要通知其他人,例如:给你的同事发一封邮件,确保每个人在手术后都能修复自己的本地病史

否则: 您只能通过新的提交和新的请求来恢复修改

还要注意:由于提交已发布,您必须假设有人已获取它们。
例如,如果错误是将私钥推送到回购协议,您可以清除中央存储库上的历史记录;但是,单凭git无法从有权访问回购协议的人的硬盘上删除数据,这取决于共享的周长。例如:如果中央回购协议是共享github回购协议,实际的解决办法是创建新密钥并使以前的密钥无效。

我问我的团队,几天来没有人撤销该分支。谢谢你的回复,它帮我解决了这个问题
git reset 4db52f3  --hard
HEAD is now at 4db52f3 last_changes_to_keep

git push origin -f