我们的git存储库大约600MB,因为有些图像是偶然发生的。现在我们要从存储库中删除这些图像。如下:
$ du -hs .git/objects
606M .git/objects
$ git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch public/images/upload_xx/" -- --all
$ git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch public/images/upload_xx/" --tag-name-filter cat -- --all
$ rm -rf ../.git/modules/flipit_application/refs/original/
$ git reflog expire --expire=now --all
$ git gc --prune=now
$ git gc --aggressive --prune=now
$ du -hs .git/objects
65M .git/objects
在我的本地系统上,repo从600MB变为65MB。推动它:
$ git push --all --force
$ git push --tags --force
这些变化似乎被推到了bitbucket,但每当我推出一个新的克隆时它仍然是600MB以上。
我错过了什么?
答案 0 :(得分:2)
你在本地仓库上运行了git gc
,但它还没有在Bitbucket上运行,因此那里的远程仓库仍然有那些旧物件。 Bitbucket运行git gc
"automatically on a regular basis based on a variety of triggers"。因此,下次运行时,您应该看到对远程仓库的影响(因此也会看到回购的新克隆)。