稷然如此

  • 首页
  • 文章分类
    • AI
    • Android
    • Java
    • Shell
    • Vue
    • C#
    • Python
    • 数据库
    • 组件
    • 其他
    • Game
  • 常用命令
    • Docker
    • Git
    • Linux
  • 操作系统
    • CentOS
    • Ubuntu
    • Windows
    • Kylin
  • 工具
    • IntelliJ IDEA
    • Visual Studio Code
稷然如此
不积跬步,无以至千里
  1. 首页
  2. 常用命令
  3. Git
  4. 正文

Git 清理大文件

2025年11月24日 18点热度 0人点赞
git 平时没做好忽略提交列表的情况下,误将无用的大文件提交至服务器,导致 clone 的时候 .git/objects/pack 目录下文件很大。比如我就提交了俩编译好的 jar 包,原来 clone 下来只有2 30M,这下整200多M了。
注意:
1.新 clone 工程,不要在原来的本地代码库中操作
2.均可以在客户端完成,不需要到服务器上去执行 GC 清理
3.直接本地新 clone 的工程下,根目录右键 -> Open Git Bash here 或者 cd 至根目录执行以下命令
# 安装,可以省去很多动作,如果不想安装,自行搜索方法
git-filter-repo pip install git-filter-repo
# 不安装大概是以下操作
# 执行以下语句
# rm -rf .git/refs/original
# git reflog expire --expire=now --all
# git fsck --full --unreachable
# git repack -A -d
# git gc --aggressive --prune=now
# git push --force

# 找出前3名最大的包
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -3

# 找出指定包下文件
git rev-list --objects --all | grep bd97bfde4d9a108d012dd1e4685ef8ad6e1ec0ea
# 删除指定包下的大文件
git filter-repo --path doc/xxx.jar --invert-paths
# 也可以删除多个
# 例:git filter-repo --path file1 --path file2 --invert-paths

# 重新添加远程仓库
git remote add origin http://xxx.xxx.xxx.xxx/xxxx.git

# 强制推送所有分支
git push --force --all origin

# 如果有标签也需要推送
git push --force --tags origin

# 远程仓库的 GC/pack 清理
git gc --aggressive --prune=now

 

标签: 暂无
最后更新:2025年11月25日

Akim

犇 骉 Java、C#、Python、Go、Android、MiniProgram、Bootstrap、Vue2

点赞
< 上一篇

Copyright © 2025 aianran.com All Rights Reserved.

免责申明 | 隐私政策 | 服务条款 | 关于我们

黔ICP备2023008200号-1

贵公网安备 52010202003594号