Git - error: File exceeds GitHub's file size limit of 100.00 MB

Github 有單一檔案大小的限制,最大 100 MB,如果超過限制你會無法 push 上去 repository。

你會看到像下面的錯誤訊息:

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: d1bdb4867603c30c2f6e4c6a8d41087c
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File file-path is 111.98 MB; this exceeds GitHub's file size limit of 100.00 MB

要解決這個問題,可以用 git filter-branch 將該檔案從你的 git repository 中移除:

  1. 到你的 git 根目錄

    $ cd YOUR-REPOSITORY
    
  2. 將檔案從 git 記錄中刪除,PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA 是你的檔案路徑

    $ git filter-branch --force --index-filter \
      "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
      --prune-empty --tag-name-filter cat -- --all
    
    這指令執行後,檔案會從 GitHub 和你 local 的 repo 中被移除,如果是重要的檔案記得事先備份在其他地方。
  3. 你可以將檔案路徑加到 .gitignore 中,避免之後檔案再被不小心 commit 進去 repo

  4. 最後將新的乾淨的 git 紀錄 push 回 GitHub,這次你會發現可以 push 成功了

    $ git push origin --force --all