在不更改本地存储库的情况下撤消远程分支上的git push?

sta*_*ith 3 git

我团队中的开发人员将更改提交到了错误的远程存储库.我想删除他推送到远程存储库上的此存储库的内容.我不想在当地改变任何东西.

因此我怎么能:

  1. 列出远程存储库分支上的提交,以便我可以看到需要删除哪些已推送的提交.

  2. 删除远程存储库分支上的每个提交,以便我可以在推送更改之前返回到提交.

我不确定"删除"是否是正确的过程,或者它是否意味着"恢复"但最终我需要远程存储库分支回到他推动他的更改之前的位置.

Ada*_*ruk 5

标记该分支的最后位置

git tag original-master origin/master
Run Code Online (Sandbox Code Playgroud)

检查从服务器获得的内容:

git fetch

git log --all --graph
Run Code Online (Sandbox Code Playgroud)

要么

gitk --all
Run Code Online (Sandbox Code Playgroud)

如果你的标签仍然有意义,那就是远程分支应该在哪里,强制推动它:

git push -f origin original-master:master
Run Code Online (Sandbox Code Playgroud)

如果是另一次提交,请将该提交作为主提交:

git push -f origin <some SHA1>:master
Run Code Online (Sandbox Code Playgroud)

清理:

git tag -d original-master
Run Code Online (Sandbox Code Playgroud)

自修复以来更新跟踪分支:

git fetch
Run Code Online (Sandbox Code Playgroud)

这假定"主"是有问题的分支.如果是另一个,请将"master"替换为正确的分支名称.