
我已經對我的程式碼庫進行了幾次本地提交,並嘗試將其推送到我的儲存庫,但有很多大檔案。我只是放棄了,繼續工作,做出本地承諾。我現在已經刪除了大文件,並再次提交,但它仍在嘗試推送原始的大文件。在我最初提交它們後,我嘗試添加 gitignore 以忽略任何超過 50mb 的文件,但無濟於事。
有任何想法嗎?
答案1
讀這裡關於過濾器分支。
有人不小心用 git add . 無意中提交了一個巨大的二進位文件,而你想在各處刪除它。也許您不小心提交了一個包含密碼的文件,並且您想讓您的專案開源。 filter-branch 是您可能想要用來清理整個歷史記錄的工具。要從整個歷史記錄中刪除名為passwords.txt的文件,您可以使用 --tree-filter 選項來過濾分支:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten
您也可以在提交這些文件的位置對分支進行互動式變基,並將它們從該提交中刪除。上面的連結也解釋了這一點,但基本上是:
git rebase -i HEAD~X
將允許您編輯最後 X 次提交。