撤消'git push'

這就是我在我所謂的穩定分支上所作的事情...... git

% 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分支恢復到原來的狀態。 bash

我該怎麼辦? ide


#1樓

git revert比這裏提出的一些方法危險性小: spa

prompt> git revert 35f6af6f77f116ef922e3d75bc80a4a466f92650
[master 71738a9] Revert "Issue #482 - Fixed bug."
 4 files changed, 30 insertions(+), 42 deletions(-)
prompt> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
prompt>

用您本身的提交替換35f6af6f77f116ef922e3d75bc80a4a466f92650。 3d


#2樓

您須要確保此存儲庫的其餘用戶沒有獲取不正確的更改,或者嘗試在要刪除的提交之上構建,由於您要回滾歷史記錄。 code

而後你須要'強制'推送舊的參考。 server

git push -f origin last_known_good_commit:branch_name

或者在你的狀況下 rem

git push -f origin cc4b63bebb6:alpha-0.3.0

您可能在遠程存儲庫上設置了receive.denyNonFastForwards 。 若是是這種狀況,那麼您將收到包含短語[remote rejected]的錯誤。 it

在這種狀況下,您將不得不刪除並從新建立分支。 io

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

若是這不起做用 - 也許是由於你設置了receive.denyDeletes ,那麼你必須直接訪問存儲庫。 在遠程存儲庫中,您必須執行相似如下管道命令的操做。

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

#3樓

我相信你也能夠這樣作:

git checkout alpha-0.3.0
git reset --hard cc4b63bebb6
git push origin +alpha-0.3.0

這與上一個方法很是類似,只是你沒必要在遠程倉庫中搗亂。


#4樓

git push origin +7f6d03:master

這會將您的回購還原爲提到的提交號


#5樓

撤消屢次提交git reset --hard 0ad5a7a6(只提供提交SHA1哈希)

撤消上次提交

git reset --hard HEAD~1(對最後一次提交的更改將被刪除)git reset --soft HEAD~1(對最後一次提交的更改將做爲未提交的本地修改提供)

相關文章
相關標籤/搜索