在我的一个项目( checkin git 存储库)中,我添加了一个巨大的目录(15000 个文件,3GB)。当我意识到这是错误的时,我删除了它,但它似乎仍然存在于历史中。

让它仍然存在会使项目克隆成为一项非常漫长的任务。项目克隆后,.git 目录大约为 4GB,但实际项目大小仅为 15MB。

我的问题是:如何调整历史记录,例如确保删除 3GB 目录?还是有另一种方法可以减少整个项目的下载大小并加快克隆过程?

最佳答案

所以你知道哪个提交引入了巨大的目录。假设这是在修订版 AAAAAAA 中完成的。

要摆脱提交,删除目录(使用提交 BBBBBBB )并再次 checkin 是不够的:提交 AAAAAAA 仍然存在,这会增加您的存储库大小。

为了摆脱提交,我们需要 git rebase 。打开你的 git 控制台并输入

git rebase -i AAAAAAA~1

这将打开一个编辑器,其中提交 AAAAAAA 位于第一行。删除这一行(即当 Vim 是你的编辑器时,点击 dd)和你再次删除目录的提交( BBBBBBB ),保存文件并退出( :wqa )。

在此之后,rebase 开始,当它完成时,AAAAAAABBBBBBB 不再存在。真的。

您现在还可以使用 git gc 触发一些内务管理,并在它运行时取一杯咖啡。

另请参阅此答案:git push heroku - stop heroku pushing/uploading massive file

关于git - 清理git历史,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9854810/

10-14 23:51
查看更多