2016-11-03 102 views
0

我有一个Git仓库,有一些Blob签入。我清除它们并清理历史记录。这一切似乎都没有问题。Git GC后Git Push说“一切都是最新的”

现在,如果我做了

git checkout master 

我得到一个200 MB的下载

git count-objects -v 

显示在包:21409

git gc --aggressive --prune=now 

其次

git count-objects -v 

显示包装内:15976

然而,我遇到了麻烦的继承人。

git push origin --force --tags 

给我 一切了最新

git status 

给我

分支主 你的分支上最新与'产地/硕士。 没有提交,工作目录干净

,如果我在这一点上,我开始了与21409 重新克隆回购如何推git的GC达到主这样下来干净,每次来?

+1

'git status'给了什么? –

+0

以及如何从存储库中的blob中清除这些内容? –

+0

git filter-branch --tree-filter“rm -rf node_modules”--prune-empty HEAD,但已经提交并推送到回购站。 – David

回答

2

您无法将垃圾回收数据推送到服务器。您需要在服务器上运行

git gc 

。或者等待一两个星期,直到服务器自动调用垃圾回收。

它是有道理的,试图推动清理数据确实回来everything up to date:垃圾收集不会改变你的回购内容,它只会删除不需要的数据(不在分支机构或标签)和压缩冗余数据(不更改任何实际数据)。

推送分支意味着推送该分支所需的所有数据。 gc可能已经删除的所有不需要的东西不是任何分支的一部分,所以Git甚至不会尝试推送它。

另外你的机器上的分支和服务器是一样的,它只是以不同的表示。无需再次上传。

如果您从历史中删除它们,Git不会删除提交。它只是将它们从图中断开。然后Git(服务器和客户端)定期运行gc,删除不需要的提交并重新打包所需的提交。

+0

哎哟..不是我希望听到的,但谢谢 – David

相关问题