如何从Git仓库中的所有提交中删除某些文件?

时间:2013-05-26 13:36:41

标签: git

我在Git的很多提交中都有很多delta文件(。*〜),我想从所有提交中删除所有文件。

1 个答案:

答案 0 :(得分:2)

从所有提交中删除使用git filter-branch

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .*~' HEAD

GitHub help page有一个更完整的命令:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch .*~'  --prune-empty --tag-name-filter cat -- --all

使用(如blog post中所述):

  • --index-filter类似于--tree-filter,但没有检查树,而且速度更快。
  • --ignore-unmatch参数,用于忽略不存在的文件。

但这会重写你的回购历史。
这意味着任何已经克隆过repo的合作者需要在git push --force之后将他/她的本地克隆重置为您的repo的新历史记录。