在我的一个项目中(已经提交到git存储库),我添加了一个巨大的目录(15000个文件,3GB)。当我意识到这是错误的时候,我删除了它,但似乎它仍然存在于历史记录中。这样做会使得项目克隆变成一个非常漫长的任务。一旦项目被克隆,.git目录约为4GB,但实际项目大小只有15MB。我的问题是:如何调整历史记录,以确保删除了那个3GB的目录?或者是否有其他方法来减小整个项目下载大小并加快克隆过程的速度?
您想要知道哪个提交引入了巨大的目录。假设是在修订版本AAAAAAA
中完成的。
为了摆脱该提交,仅删除目录(使用提交BBBBBBB
)并重新检入不足够:提交AAAAAAA
仍然存在,仍会使您的存储库大小增加。
为了消除提交,我们需要使用git rebase
。打开您的git控制台,并输入:
git rebase -i AAAAAAA~1
这将打开一个编辑器,在第一行中包含提交AAAAAAA
。删除此行(即当Vim是您的编辑器时,按下dd),然后再次提交您删除目录的提交(BBBBBBB
),保存文件并退出(:wqa
)。
之后,重新贴基开始,完成后,AAAAAAA
和BBBBBBB
将不再存在。确实如此。
您现在还可以使用git gc
触发一些清理工作,并在其运行时喝杯咖啡。
请参阅此答案:git push heroku - stop heroku pushing/uploading massive file