撤消以前推送到遠程存儲庫的問題已經被問了好幾次,但在我看來,答案並不完整。根據Git - Undo pushed commits中的建議,我可以重置遠程存儲庫,以便其行爲就像從未發生過最後一次提交一樣。但是,似乎撤消提交的效果仍然顯示在git存儲庫的大小中。git撤消推送提交對存儲庫大小的影響
這裏的假設情況: 用戶並git add
,git commit
即把一個巨大的文件,「BigFatFile.bin」到版本控制。他將更改推送到遠程存儲庫。假設這個文件很大,也許是1GB。我們不想在git中維護這些文件。所以我們試圖撤銷這個錯誤的提交,如下所示:
- 克隆遠程存儲庫。
- 執行
git reset --hard HEAD^
刪除上次提交。 - 執行
git push -f
將更改推送到遠程存儲庫。
這似乎工作,除了在遠程存儲庫的大小仍然可見的推的影響的事實。它的尺寸增加了1 GB。
有可能在庫的本地副本做清理步驟,使用git reflog
和git gc
和git repack
,從而降低了本地存儲庫的大小,這是什麼提交「BigFatFile.bin」之前。但是做一個git push
(或git push -f
)似乎並沒有減少遠程倉庫的大小。
如何永久撤銷上次推送的提交,以便存儲庫的大小恢復到推送前的大小?
非常感謝。我有權訪問服務器(不是GitHub),所以我可以運行該代碼。我對可以在裸存儲庫上運行哪些命令以及哪些命令無法運行有點困惑,因此我認爲清理必須在克隆的存儲庫上完成,然後再推送。 –
@DarylMcCullough你可以在服務器端裸回購這些命令。 – VonC