在一次不小心向GitHub提交了一个1GB文件后,出现一个令人崩溃的错误:
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: a22b6b202ddb6da3e2795ca71663de19
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File system_status/test_26457 is 1024.00 MB; this exceeds GitHub's file size limit of 100.00 MB
更崩溃的是,在此之后又进行了几次提交,可不能因为这次手误丢掉几次提交成果呀。
在网上浏览一圈后找到解决方法:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch system_status/test_26457'
大概原理是,删除大文件,重新生成commit,但运行后又出现问题:
Cannot rewrite branches: You have unstaged changes.
之后找到一种较为暴力的解决方法:
git stash
在网上找到关于这段命令(git 储藏)的使用场景:
解决后,再次修复,重新提交,完成!
$ git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch system_status/test_26457'
Rewrite 11983344a8934d6e9a7a1e225e6d0f6daf3923a4 (15/21)rm 'system_status/test_26457'
Rewrite 49ac22cd47b0504350d3643ff77b09b14f01ed03 (16/21)rm 'system_status/test_26457'
Rewrite 8a721565399d929514e3ed4661ea7c938074eb32 (17/21)rm 'system_status/test_26457'
Rewrite 6e9e291690bdd9923daef62a18d08229dc30a320 (21/21)
Ref 'refs/heads/master' was rewritten
$ git push
Author: Frytea
Title: 解决git不小心提交大文件导致无法提交问题
Link: https://cloud.tencent.com/developer/article/1665565
Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.