色魔王子7 发表于 2018-1-14 12:29:23

第一次用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,真正的项目使用需要谨慎啊!
页: [1]
查看完整版本: 第一次用git filter-branch 有点爽