git - 如何使 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。有一个选项,就是新建一个项目,新建一个文件夹,把所有项目都放到文件夹里,git init ... git push 就解决了,但是有没有机会保留我的git历史?
我使用这个命令检查了我的 git 日志,
git log --name-status >1.log
它显示了我添加 node_modules 的历史记录已被删除。
$ 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
,repo 又回到了 1.48MB,问题解决了。
推荐阅读
- ajax - Laravel Ajax 下拉示例
- node.js - 无法在 Centos7 容器中公开 node express 应用程序的端口
- go - 具有“有一个”关联的查询(一对一)
- node.js - 在 3 个不同的 pod 中运行应用程序的 3 个组件
- git - git checkout & git pull : 执行时避免中间文件更改
- javascript - 服务工作者在服务器启动后不重新加载页面就无法工作
- javascript - 如何让 API 抽象层代码更干净
- npm - 如何在 gulp @4 中“浏览器同步 + LiveReload + 观看”
- sql-server - 计算运行总计
- inno-setup - UninstallRun 中的检查参数功能无法正常工作