1. 程式人生 > >Git remote: error: this exceeds file size limit of 100.0 MB

Git remote: error: this exceeds file size limit of 100.0 MB

在用git進行程式碼的控制時,因為不小心在專案中包含了超過100M的檔案,結果怎麼都不能進行後續的push操作,一直報錯:

remote: error: File ThinkingInJava/test.data is 144.0 MB; this exceeds file size limit of 100.0 MB

之後我直接將該檔案刪除掉了,之後又重新push,結果還是報一樣的錯誤。於是想到可能是該檔案已經存在於緩衝區中,於是,

$ git ls-files # 該命令輸出在緩衝區中快取的所有檔案
$ git ls-files | grep test.data #找我儲存的檔案,結果沒找到(可能我已經將緩衝區的檔案刪除掉了)

如果檔案在緩衝區中,則直接輸入命令

$ git rm --cached your-file-name

之後發現重新push還是不行,於是在晚上查,有網友非常機智的給出了下面的命令:

$ git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch your-file-name' --tag-name-filter cat -- --all

於是,我就將上面的your-file-name換成了我檔案的全路徑名:

$ git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch /e/xxx/xxxx/ThinkingInJava/test.data' --tag-name-filter cat -- --all

結果push之後還是不對,一直報錯如下:

 fatal: E:/XXX/XXX/ThinkingInJava/test.data: 'E:/XXX/XXX/ThinkingInJava/test.data' is outside repository
index filter failed: git rm -rf --cached --ignore-unmatch /e/XXX/XXX/ThinkingInJava/test.data

後來嘗試了將your-file-name換成了我當前所在資料夾下的路徑,即換位相對路徑,結果push成功了!!!(注意:執行命令所在的資料夾和.git資料夾在同一個路徑下)

$ git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ThinkingInJava/test.data' --tag-name-filter cat -- --all

其實原本報錯的全部資訊為:

remote: error: File ThinkingInJava/test.data is 144.0 MB; this exceeds file size limit of 100.0 MB

因此,提示是ThinkingInJava/test.data,就僅僅需要改成這個檔名就行,不用加上全路徑,否則報錯!!!