第一次用git filter-branch 有点爽

之前从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,真正的项目使用需要谨慎啊!

posted @ 2017-05-17 15:02  W0H  阅读(898)  评论(0编辑  收藏  举报