如何使gitLab存储库包文件大小减小



我过去每个存储库有一个文件夹,并推送到gitlab。后来我想把所有这些代码分组到一个文件夹(Wrapper(中。我已经删除了中每个文件夹中的.git

-Wrapper   // git initiated
-Project1 // .git removed
-Project2 // .git removed  

问题是它推送了以下目录

teams/*
dist/*
node_modules/*
temp/*
lib/*

我已经纠正了这些命令的问题

git rm -r --cached .
git add .
git commit -m "Untracked files issue resolved to fix .gitignore"

并在Wrapper根文件夹中添加了一个.gitignore文件。存储库仍然显示为80MB。

我尝试了以下

git filter-branch --tree-filter "rm -rf node_modules" --prune-empty HEAD
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
git push origin --force --all
git push origin --force --tags

并尝试了这个

git filter-branch --force --index-filter 
'git rm --cached --ignore-unmatch *node_modules*' 
--prune-empty --tag-name-filter cat -- --all
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
git push origin --force --all
git push origin --force --tags

我的存储库仍然是80MB。有一个选项,就是创建一个新项目,创建一个文件夹,把所有项目都放在文件夹里,gitinit。。。git推送会解决这个问题,但我有机会保留我的git历史吗?

我用这个命令检查了我的git日志,

git log --name-status >1.log

它显示了我添加nodemodule的历史。

$ git count-objects -vH
count: 0
size: 0 bytes
in-pack: 431
packs: 1
size-pack: 1.48 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes

除了"如何从Git存储库中的提交历史记录中删除/删除大文件?"之外,最佳实践是使用新工具git filter-repo来取代BFG和git filter-branch

git filter-repo --strip-blobs-bigger-than 1M --refs 84971f1..master

参见"基于路径的过滤"部分

git filter-repo --paths-from-file toBeRemove.txt --invert-paths 

放入toBeRemove.txt:

teams/
dist/
node_modules/
temp/
lib/

注意:如果您在运行上述命令时收到以下错误消息:

Error: need a version of `git` whose `diff-tree` command has the `--combined-all-paths` option`

这意味着您必须更新git


如果本地存储库很好,但远程存储库仍报告较大的大小,则可能是reflog问题,存储库远程托管服务器自动执行的git-gc稍后将修复报告的大小。

OP在评论中确认:

在线回购GitLab没有更新文件大小
我刚刚做了一个git clone,回购回到了1.48MB,问题解决了。

最新更新