我如何刪除GitHub上的提交?


Answers

git push -f origin HEAD^:master

這應該“撤銷”推動。

Question

我“不小心”向GitHub推送了一個提交。

是否有可能刪除此提交?

我想恢復我的GitHub存儲庫,因為它在提交之前。




添加/刪除文件以按照您想要的方式獲取內容:

git rm classdir
git add sourcedir

然後修改提交:

git commit --amend

之前的錯誤提交將被編輯以反映新的索引狀態 - 換句話說,它會像您從未犯過錯

請注意,如果您尚未推送,則只應該執行此操作。 如果你推送了,那麼你只需要正常提交修復。




在Github上查找你希望成為分支頭部的提交參數,並使用以下命令:

git push origin +[ref]:[branchName]

在你的情況下,如果你只想返回一個提交,找到那個提交的開始,例如說它是7f6d03,並且你想改變的分支的名字,比如說它是master,並且請執行下列操作:

git push origin +7f6d03:master

加號字符被解釋為--force ,由於您正在重寫歷史記錄,這將是必要的。

請注意,無論您--force執行提交,都可能會重寫合併分支的其他人的歷史記錄。 但是,如果您在任何人合併您的分支之前迅速發現問題,則不會有任何問題。




保留分支和合併結構對於在執行rebase時使用--preserve-merges選項很重要:

git rebase --preserve-merges -i HEAD^^



如果你想刪除互動式底線,

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 reset HEAD~n

您可以從本地回購中刪除最後n個提交,例如HEAD〜2。 繼續在您的存儲庫上強制使用git push。

git push -f origin <branch>

希望這可以幫助!




1. git reset HEAD^ --hard
2. git push origin -f

這為我工作。




如果您想在刪除後保留提交更改:

請注意,如果要刪除的提交是最後一個提交的提交,則此解決方案有效。

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 log來找出你想要恢復的提交

  2. git push origin +7f6d03:master而7f6d03是錯誤推送提交之前的提交。 +是為了force push

就是這樣。

Here是一個非常好的指南,可以輕鬆簡單地解決您的問題!




刪除最近的提交,保留您完成的工作:

git reset --soft HEAD~1

刪除最近的提交,破壞你所做的工作:

git reset --hard HEAD~1





Links



Tags

git git   github