如何在git中删除不完整的提取文件?

时间:2018-07-23 08:56:51

标签: git

我不小心在存储库中运行了命令git pull <wrong_remote_url>。在拉动过程中,我通过单击Ctrl+C来取消它。

$ du -h -d 1
20M .  # At first the repository is only 20M
$ git status
OK
$ git pull https://example.com/large_repository.git  # accidently pull the wrong repository
press Ctrl + C during the pull  # cancel it during the pull, because I find it is downloading a lot of large file
$ git status
On branch master
nothing to commit, working directory clean
$ du -h -d 0
2.1G .  # Now the repository is too large
$ du -h -d 0 .git
2.1G .git  # There may be a lot of cached and useless file in .git directory

存储库仍然可以使用,我仍然可以像往常一样使用git,多余的2G文件不会被推送到存储库。但是我知道2G目录中大约有.git个缓存文件。如何删除这些文件?我尝试了git gcgit clean,但是它们不起作用。由于某种原因,存储库中有一些数据库数据,因此我不想删除存储库并再次克隆它。


我在.git/objects/pack/中找到了名为tmp_pack_9qTKaEtmp_pack_CKZSuG等的tmp文件。
我认为这是大的,无用的缓存文件。如果我删除它们,它会起作用:

rm -f .git/objects/pack/tmp_*

git中是否有任何命令可以自动安全地删除这些文件?

2 个答案:

答案 0 :(得分:1)

运行命令

git repack -Ad
git prune

我从this answer's comment得到了这个答案。可以查看更多文档here。运行这两个命令后,.git/objects/pack中的tmp文件已被删除。

答案 1 :(得分:0)

尽管它有点题外话,但我将其添加到先前的答案中:

如果要实现中间拉动,则是拉错了本地分支,或者拉出了错误的远程分支,请不要中断它。

让它完成然后git merge --abort完成会更容易。