撤消“git push" [英] Undoing a 'git push'

查看:30
本文介绍了撤消“git push"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我在我的supposed-to-stable 分支上所做的......

Here's what I did on my supposed-to-be-stable branch...

% git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded alpha-0.3.0 to master.
% git status
# On branch alpha-0.3.0
# Your branch is ahead of 'origin/alpha-0.3.0' by 53 commits.
#
nothing to commit (working directory clean)
% git push
Fetching remote heads...
  refs/
  refs/heads/
  refs/tags/
  refs/remotes/
'refs/heads/master': up-to-date
updating 'refs/heads/alpha-0.3.0'
  from cc4b63bebb6e6dd04407f8788938244b78c50285
  to   83c9191dea88d146400853af5eb7555f252001b0
    done
'refs/heads/unstable': up-to-date
Updating remote server info

后来我意识到这完全是个错误.我想撤消整个过程,并将 alpha-0.3.0 分支恢复到原来的样子.

That was all a mistake as I later realized. I'd like to undo this entire process, and revert the alpha-0.3.0 branch back to what it was.

我该怎么办?

推荐答案

您需要确保此存储库的其他用户不会获取不正确的更改或尝试在要删除的提交之上构建,因为您是即将倒回历史.

You need to make sure that no other users of this repository are fetching the incorrect changes or trying to build on top of the commits that you want removed because you are about to rewind history.

然后您需要强制"推送旧引用.

Then you need to 'force' push the old reference.

git push -f origin last_known_good_commit:branch_name

或者你的情况

git push -f origin cc4b63bebb6:alpha-0.3.0

您可能在远程存储库上设置了 receive.denyNonFastForwards.如果是这种情况,那么您将收到一个错误,其中包含短语 [remote denied].

You may have receive.denyNonFastForwards set on the remote repository. If this is the case, then you will get an error which includes the phrase [remote rejected].

在这种情况下,您必须删除并重新创建分支.

In this scenario, you will have to delete and recreate the branch.

git push origin :alpha-0.3.0
git push origin cc4b63bebb6:refs/heads/alpha-0.3.0

如果这不起作用 - 也许是因为您设置了 receive.denyDeletes,那么您必须直接访问存储库.在远程存储库中,您必须执行类似于以下管道命令的操作.

If this doesn't work - perhaps because you have receive.denyDeletes set, then you have to have direct access to the repository. In the remote repository, you then have to do something like the following plumbing command.

git update-ref refs/heads/alpha-0.3.0 cc4b63bebb6 83c9191dea8

这篇关于撤消“git push"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆