永久删除git repo中不需要的文件夹 - Repo大小不变

时间:2015-07-09 05:01:34

标签: git

我有git repo,我不小心将一些库文件提交到git远程仓库。

现在它已经增加了大约6.23 GB的大小。然后我尝试使用以下命令删除库

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch node_modules" -- --all

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

现在,库已从存储库中删除,并且未在repo文件夹中列出。但是,本地回购的规模仍然比以前更大

还有一件事是执行上述命令需要花费大量时间。我不确定他们是否正常工作

我甚至尝试将其推送到远程仓库,

git push --all --force

但是没有成功推送,它会一直尝试直到最后一个突然出现,因为远程仓库无法到达或没有响应那种

我也试过重写标签

git filter-branch -f \ --index-filter 'git rm -r --cached --ignore-unmatch node_modules' \  --tag-name-filter 'cat' -- --all

我还尝试了以下方法使其正常工作

git config --global pack.windowMemory 0
git config --global pack.packSizeLimit 0
git config --global pack.threads "3"

但无论我做什么,回购的大小仍然是相同的

注意:我试过

git fsck --full --unreachable

列出了几个无法访问的标记

2 个答案:

答案 0 :(得分:4)

我在Git pull error: unable to create temporary sha1 filename中提到单靠git gc是不够的。

应该降低回购规模的一个组合应该是:

/*

但是,这必须跟踪大文件(git filter-branch)的任何清理,并且仅适用于本地存储。

将(git gc git repack -Ad # kills in-pack garbage git prune # kills loose garbage )推送到远程仓库后,所述远程仓库不会受益于同样的尺寸缩减。还需要在远程端进行gc / repack / prune。

if that remote side is TFS... this isn't easy/possible to do for now

答案 1 :(得分:1)

我很抱歉伙计们! 除了node_module之外,还有另一个主要元凶ntvs_analysis.dat导致了巨大的repo大小。现在我删除了它,现在repo大小是75 MB。甚至我所遵循的步骤也在起作用