从git缓存中删除的文件不会反映在远程存储库中

时间:2014-08-19 11:18:15

标签: git garbage-collection push bitbucket git-filter-branch

我们的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以上。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

你在本地仓库上运行了git gc,但它还没有在Bitbucket上运行,因此那里的远程仓库仍然有那些旧物件。 Bitbucket运行git gc "automatically on a regular basis based on a variety of triggers"。因此,下次运行时,您应该看到对远程仓库的影响(因此也会看到回购的新克隆)。