Git中的.git文件夹过大的解决方法
1)首先确保所有分支都没有引用该提交,包括 HEAD 也不指向这个提交。
2)git reflog expire --expire=now --all
3)git gc --prune=now
命令解析
git reflog
git reflog [show] [log-options] [<ref>]
git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
[--rewrite] [--updateref] [--stale-fix]
[--dry-run] [--verbose] [--all | <refs>…]
git reflog delete [--rewrite] [--updateref]
[--dry-run] [--verbose] ref@{specifier}…
git reflog exists <ref>
git expire子命令用于修剪旧的 reflog 条目。从比较日志中删除expire比expire-unreachable时间早的条目或比时间早且不能从当前提示可达的条目。--expire=<time>:剪除比指定时间更早的条目。如果未指定此选项,则从配置设置中获取到期时间,而配置设置gc.reflogExpire又默认为 90 天。--expire=all不论年龄大小,都能修剪;--expire=never关闭修剪可及条目。--all:处理所有引用的 reflog。
git gc
--aggressive:通常git gc运行速度很快,同时提供良好的磁盘空间利用率和性能 此选项将导致git gc更积极地优化存储库,但花费更多时间。这种优化的效果是持久的,所以这个选项只需要偶尔使用; 每隔几百个变更集左右。--auto:使用此选项,git gc检查是否需要进行任何清洁工作; 如果没有,它会退出而不执行任何工作。一些 git 命令git gc --auto在执行可能会产生许多松散对象的操作之后运行。--prune=<date>:修剪比日期更旧的松散对象(默认为 2 周前,可由配置变量覆盖gc.pruneExpire)。--prune=不管年龄大小,都修剪松散的物体,并且如果另一个进程同时写入存储库,则会增加腐败风险;
更多
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果