我如何刪除GitHub上的提交?
我“不小心”向GitHub推送了一個提交。
是否有可能刪除此提交?
我想恢復我的GitHub存儲庫,因為它在提交之前。
git log
來找出你想要恢復的提交git push origin +7f6d03:master
而7f6d03是錯誤推送提交之前的提交。+
是為了force push
就是這樣。
Here是一個非常好的指南,可以輕鬆簡單地解決您的問題!
如果您想在刪除後保留提交更改:
請注意,如果要刪除的提交是最後一個提交的提交,則此解決方案有效。
1 - 從日誌中復制您想要返回的提交引用:
git log
2 - 將git重置為提交引用:
git reset <commit_ref>
3 - 在推送到遠程後,將錯誤提交的本地更改隱藏/存儲以後使用:
git stash
4 - 將更改推送到遠程存儲庫,(-f或--force):
git push -f
5 - 將存儲的更改返回到本地存儲庫:
git stash apply
7 - 如果你在修改中有未跟踪/新文件,你需要在提交之前將它們添加到git:
git add .
6 - 添加所需的任何額外更改,然後提交所需的文件(或使用點'。'代替每個文件名,以提交本地存儲庫中的所有文件:
git commit -m "<new_commit_message>" <file1> <file2> ...
要么
git commit -m "<new_commit_message>" .
1. git reset HEAD^ --hard
2. git push origin -f
這為我工作。
在Github上查找你希望成為分支頭部的提交參數,並使用以下命令:
git push origin +[ref]:[branchName]
在你的情況下,如果你只想返回一個提交,找到那個提交的開始,例如說它是7f6d03,並且你想改變的分支的名字,比如說它是master,並且請執行下列操作:
git push origin +7f6d03:master
加號字符被解釋為--force
,由於您正在重寫歷史記錄,這將是必要的。
請注意,無論您--force
執行提交,都可能會重寫合併分支的其他人的歷史記錄。 但是,如果您在任何人合併您的分支之前迅速發現問題,則不會有任何問題。
刪除最近的提交,保留您完成的工作:
git reset --soft HEAD~1
刪除最近的提交,破壞你所做的工作:
git reset --hard HEAD~1
保留分支和合併結構對於在執行rebase時使用--preserve-merges
選項很重要:
git rebase --preserve-merges -i HEAD^^
在你的終端上運行這個命令。
git reset HEAD~n
您可以從本地回購中刪除最後n個提交,例如HEAD〜2。 繼續在您的存儲庫上強制使用git push。
git push -f origin <branch>
希望這可以幫助!
如果你想刪除互動式底線,
git rebase -i HEAD~4
4 represents total number of commits to display count your commit and
改變它
並從列表中刪除您想要的提交...
通過Ctrl + X(ubuntu)或:wq(centos)保存更改
第二種方法,做回复,
git revert 29f4a2 #your commit ID
這將恢復特定的提交
添加/刪除文件以按照您想要的方式獲取內容:
git rm classdir
git add sourcedir
然後修改提交:
git commit --amend
之前的錯誤提交將被編輯以反映新的索引狀態 - 換句話說,它會像您從未犯過錯
請注意,如果您尚未推送,則只應該執行此操作。 如果你推送了,那麼你只需要正常提交修復。