在我的一个项目( 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 开始,当它完成时,
AAAAAAA
和 BBBBBBB
不再存在。真的。您现在还可以使用
git gc
触发一些内务管理,并在它运行时取一杯咖啡。另请参阅此答案:git push heroku - stop heroku pushing/uploading massive file
关于git - 清理git历史,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9854810/