我有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
列出了几个无法访问的标记
答案 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。甚至我所遵循的步骤也在起作用