永久删除git存储库中的文件,同时保留历史记录

时间:2013-04-03 08:34:03

标签: git revision-history

以下是我的情况:

我有一个带有以下布局的git存储库

myrepo/
myrepo/index
myrepo/data/data01
myrepo/data/data02
myrepo/data/data03
...

我有几百次提交,每次提交都会改变索引文件并添加一个数据文件。现在,存储库变得非常大,我想完全摆脱数据文件,不仅仅是从头脑中删除它们,还要从元数据中删除它们,从而减少了存储库的实际大小。但我想这样做,保留我的提交的其余部分(索引的更改,同时添加数据)。这可能吗?

1 个答案:

答案 0 :(得分:0)

我在github找到了答案。以下是必要的命令:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch data/*' --prune-empty --tag-name-filter cat -- --all
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now