之前从github上fork了一个react.js的项目
然而原作者有些疏忽,从第一个commit开始就把 node_modules 全都上传了......
然后就导致 .git 文件夹有 10M 这么大, 上海电信上github的速度你懂得
于是今天拿出了git里的核武器 filter-branch 成功改写了commit历史 (于是成了两个完全不同的repo XD
使用方法
1. git filter-branch --force --index-filter "git rm --cached --ignore-unmatch -r 要删除的文件" --prune-empty --tag-name-filter cat -- --all
这句的意思是从遍历所有的commit,删除那个文件,重写历史commit
2. 然后强行远程推送
git push origin --all --force
3. 解决了
再git clone的时候发现repo已经没有这么大了 :)
主要用处是删除之前不小心提交的不该出现在repo里的东西,比如二进制文件还有敏感信息啥的。
我这个只是个小repo,真正的项目使用需要谨慎啊!