這個問題在這裏已有答案: git
我「意外地」向GitHub推送了一個提交。 ui
是否能夠刪除此提交? spa
我想恢復我提交以前的GitHub存儲庫。 code
使用git revert
恢復推送。 it
git-revert - 恢復一些現有的提交 io
git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>... git revert --continue git revert --quit git revert --abort
還原相關修補程序引入的更改,並記錄一些記錄它們的新提交。 這須要您的工做樹是乾淨的(沒有HEAD提交的修改)。 ast
若是隻是一個錯誤(也許你分叉一個回購,而後最終推到原來而不是一個新的),一個簡單的恢復,這是另外一種可能性: class
git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
顯然,將該數字換成要返回的提交數。 程序
再次按下後,一切都會被刪除。 爲此,下一步將是: 推送
git push --force
保留分支和合並結構對於在執行rebase時使用--preserve-merges
選項很重要:
git rebase --preserve-merges -i HEAD^^
重寫歷史不是很好。 若是咱們使用git revert <commit_id>
,它會建立一個乾淨的反向提交所述提交ID。
這樣,歷史不會被重寫,相反,每一個人都知道有一個恢復。
在Github上找到您想要成爲分支頭的提交的ref規範,並使用如下命令:
git push origin +[ref]:[branchName]
在您的狀況下,若是您只想返回一個提交,請找到該提交的ref的開頭,例如它是7f6d03,以及您要更改的分支的名稱,例如它是master,以及請執行下列操做:
git push origin +7f6d03:master
加號字符被解釋爲--force
,這是必要的,由於您正在重寫歷史記錄。
請注意,您隨時--force
提交你可能改寫其餘民族的歷史誰合併你的分支。 可是,若是您快速發現問題(在其餘任何人合併您的分支以前),您將不會遇到任何問題。