这是我的情况:
我有一个具有以下布局的 git 存储库
myrepo/
myrepo/index
myrepo/data/data01
myrepo/data/data02
myrepo/data/data03
...
我有几百个提交,每个提交都会更改索引文件并添加一个数据文件。现在,存储库变得非常大,我想完全摆脱数据文件,不仅将它们从我的脑海中删除,还从元数据中删除,从而减少存储库的实际大小。但我想这样做,保留我提交的剩余部分(在添加数据的同时完成索引的更改)。那可能吗?
这是我的情况:
我有一个具有以下布局的 git 存储库
myrepo/
myrepo/index
myrepo/data/data01
myrepo/data/data02
myrepo/data/data03
...
我有几百个提交,每个提交都会更改索引文件并添加一个数据文件。现在,存储库变得非常大,我想完全摆脱数据文件,不仅将它们从我的脑海中删除,还从元数据中删除,从而减少存储库的实际大小。但我想这样做,保留我提交的剩余部分(在添加数据的同时完成索引的更改)。那可能吗?
我自己在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