2017-07-06 106 views
1

當我打算在我的本地存儲庫(應該在git commit後停止)時,我意外地使用git push將項目推送到了Git。撤消'git push'的問題

我想撤消這個git push,這樣服務器repo就會回到特定的提交。我已經看過了,如this one其他問題,但混帳推-f不爲我工作,並拉起錯誤:To prevent you from losing history, non-fast-forward updates were rejected.

git push -f origin CommitSHA:mainline 

我以爲-f標籤將迫使推我甚至嘗試不管我是否在推動之前的提交。我應該如何解決這個錯誤,以便我可以撤消git push?

回答

0

是不是你的信息丟失了一些東西?我相信它應該像

Merge the remote changes (e.g. 'git pull') before pushing again

之後的部分關於拒絕你的推。所以,這意味着遠程分支可能比你的本地分支有更新的變化,例如,別人推動了變化。在這種情況下,我建議不要強行推行,因爲你可能會丟掉其他人的提交。

你既可以:

  • 做吧(git pull首先應該工作)
  • 使用git revert,而不是撤消你的承諾。這將最終引入第二次提交,恢復您的第一次提交,因此它們都將在歷史記錄中(https://git-scm.com/docs/git-revert)。這並不理想,但在遠程分支上重寫歷史記錄永遠不會。