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

时间:2012-01-05 01:43:27

标签: git

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

因此我怎么能:

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

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

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

1 个答案:

答案 0 :(得分:5)

标记该分支的最后位置

git tag original-master origin/master

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

git fetch

git log --all --graph

gitk --all

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

git push -f origin original-master:master

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

git push -f origin <some SHA1>:master

清理:

git tag -d original-master

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

git fetch

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