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

kee*_*hee 9 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

git push --all --force
Run Code Online (Sandbox Code Playgroud)

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

我也试过重写标签

git filter-branch -f \ --index-filter 'git rm -r --cached --ignore-unmatch node_modules' \  --tag-name-filter 'cat' -- --all
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法来使它工作

git config --global pack.windowMemory 0
git config --global pack.packSizeLimit 0
git config --global pack.threads "3"
Run Code Online (Sandbox Code Playgroud)

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

注意:我试过了

git fsck --full --unreachable
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 4

我在Git pull error:无法创建临时 sha1 文件名中提到,仅 git gc 是不够的。

可以减少存储库大小的一种组合应该是:

git gc
git repack -Ad      # kills in-pack garbage
git prune           # kills loose garbage
Run Code Online (Sandbox Code Playgroud)

但是,这必须在大文件 ( git filter-branch) 的任何清理之后进行,并且这只适用于本地存储库。

将 ( git push --force) 推送到远程存储库后,所述远程存储库将不会受益于相同的大小减小。gc/repack/prune 也需要在远程端完成。

如果远程端是 TFS...目前这并不容易/不可能做到


归档时间:

查看次数:

1171 次

最近记录:

10 年,3 月 前