清理git历史

时间:2012-03-24 19:30:07

标签: git github

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

让它仍然在那里使一个项目克隆一个非常长的任务。克隆项目后,.git目录大约为4GB,但实际项目大小只有15MB。

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

2 个答案:

答案 0 :(得分:4)

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

要删除提交,删除目录(使用commit BBBBBBB)并再次签入是不够的:提交AAAAAAA仍然存在,炸毁了repo大小。< / p>

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

git rebase -i AAAAAAA~1

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

在此之后,开始变基,当它完成后,AAAAAAABBBBBBB不再存在。真。

你现在也可以用git gc触发一些家务,并在它运行时取一杯咖啡。


另见答案:git push heroku - stop heroku pushing/uploading massive file

答案 1 :(得分:1)

尝试遵循本指南:http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html

基本上,你可以做到

git reset --hard HEAD~1

git reset --hard [prev_commit]