簡體   English   中英

從git歷史記錄中刪除提交(永遠)

[英]remove commits (forever) from git history

我想從git存儲庫的整個歷史記錄中永久刪除指定的提交。 我看到了這個線程 ,在其中推薦以下內容:

git reset --hard HEAD~4
git push origin HEAD --force

很好,可以重置存儲庫的狀態,但絕不會刪除我的提交。 我想從字面上回滾歷史記錄,並放棄自4個修訂版以來對倉庫的更改。

有人可以幫我嗎? 當我嘗試上述內容並查看Github中的修訂歷史記錄時,仍然看到坐在那里的不需要的提交。

我看到了這篇文章 ,但是在研究此解決方案之前,我想檢查是否還有其他選擇。

根據您的問題,當您跑步時實際會發生什么

git push origin HEAD --force

尚不清楚,但我可以想到至少兩個原因,為什么它可能無法將master強制推向origin

  1. 當前已簽出的分支不是 master分支,並且該分支已經是origin上的最新分支,或者
  2. 您有一個獨立的HEAD

通過運行git checkout master確保master確實是當前簽出的分支。 然后運行您的強制推送命令。 或者,在git push命令中顯式指定master

git push --force origin master

那應該做。

如果不需要的提交不再被分支或標簽(即所謂的“松散對象”)引用,則垃圾收集器將自動刪除它們。 默認情況下,GC作用於90天以上的對象。

您仍然可以通過以下方式手動觸發較早的GC:

git reflog expire --expire=now --all
git gc --prune=all

但是,這只會在您的本地存儲庫上起作用,而不會在GitHub上起作用。 GitHub每周運行一次帶有自己選擇的GC,因此,如果您現在要刪除提交,則必須刪除存儲庫,重新創建存儲庫,並在GC清理后將其推送到本地。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM