今天发现gitlab上的程序竟然有200多兆,但是下载源码并没有那么大,最后发现是git文件夹下的pack文件过大,所以记录一下
参考: https://blog.csdn.net/haorenlin5945/article/details/89498289
https://www.cnblogs.com/lout/p/6111739.html

以下操作步骤

.git/objects/pack 文件过大,可能是由于开发过程中上传过大文件,虽然现已删除,但仍然保存着git记录中。

解决办法:

一、删除仓库上的项目,重新提交代码。

二、彻底清除历史记录

1.识别出最大的三个文件
执行:

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -3
5d4ba4bc42c8ab2d6f05e960da473a03dda4b8bc blob   9174224 9155533 11001
93b84be2f3835f922350c0fdf904f7c9d879aa97 blob   9324204 9305573 10401125
8c98a6a9529dc3d1e428e94b67780bf8251d3aad blob   9661570 9642954 1115
da457035bbe6134a707ed982b8231a1d9fb46f5d blob   9685628 9666932 9727913
829b9d04b876f058b56849f7296c270a12f3ce04 blob   9688889 9670122 23856

2.查询大文件的文件名
执行:

git rev-list --objects --all | grep 829b9d04b876f058b56849f7296c270a12f3ce04
 829b9d04b876f058b56849f7296c270a12f3ce04 dist.rar

这里看到文件名是dist.rar

3.将该文件从历史记录的所有 tree 中移除
执行:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch  dist.rar'

4.执行如下语句

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
 

(此处有个疑问,按照操作步骤,把多余的dist压缩文件的记录清掉了,但是还是很大,发现还存在唯一一个.pack文件很大,网上说的命令都是查找.idx文件中较大的前几个,此处不清楚,先挖坑吧)
在这里插入图片描述

次日更新 :
找到另一篇文章,
https://www.jianshu.com/p/fe3023bdc825
按照教程实现了本地git的瘦身,但是不懂为什么远程仓库越来越大,变成了500多兆,最后重新关联了一个远程仓库,只有不到20兆了,由此解决问题

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 你的大文件名' --prune-empty --tag-name-filter cat -- --all
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
git push origin master --force
git remote prune origin
                    今天发现gitlab上的程序竟然有几百兆,但是下载源码并没有那么大,最后发现是git文件夹下的pack文件过大,所以记录一下(此处有个疑问,按照操作步骤,把多余的dist压缩文件的记录清掉了,但是还是很大,发现还存在一个.pack文件很大,网上说的命令都是查找.idx文件中较大的前几个,此处不清楚,先挖坑吧)以下操作步骤.git/objects/pack 文件过大可能是由于开发过程中上传...
				
以下方法试用与如下情况: 曾经.git/object/pack/ 文件夹下有文件过大的情况 出现原因: .git文件主要用来记录每次提交的变动,当我们的项目越来越大的时候, .git文件越来越大。 很大的可能是因为提交了大文件,如果你提交了大文件 A,那么即使你在之后的版本中将其删除,但实际上,记录中的大文件仍然存在。 原因在于虽然你在后面的版本中删除了大文件A,但是Git是有版本倒退功能,那么如果大文件A不记录下来,git拿什么来回退呢? git给出了解决方案,使用git branch-filter来遍历
//查找大文件 git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5 //根据上面查找到的hash值,筛选文件git rev-list --objects --all | grep 28c65ed...
在我们日常使用Git的时候,一般比较小的项目,我们可能不会注意到.git 这个文件。 其实, .git文件主要用来记录每次提交的变动,当我们的项目越来越大的时候,我们发现 .git文件越来越大。 很大的可能是因为提交了大文件,如果你提交了大文件,那么即使你在之后的版本中将其删除,但是, 实际上,记录中的大文件仍然存在。 为什么呢?仔细想一想,虽然你在后面的版本中删除了大文件,但是Git是有...
执行下面这样的repo命令就行了:repo forall -c 'commitID=`git log --before "2017-03-17 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'参数说明: forall  操作分支中的所有仓库 -c  只操作当前分支 –before  早于指定时间点的提交记录 -1  只显
要下载 GitHub 上使用 Git LFS 工具存储的大文件,您可以进行以下步骤: 1. 安装 Git LFS:如果您的系统上没有安装 Git LFS,请先安装它。可以通过终端或命令行进行安装。 2. 克隆存储库:使用以下命令克隆项目存储库到本地: git clone https://github.com/user/repo.git 3. 下载大文件:进入存储库目录,并使用以下命令下载大文件git lfs pull 这样,您就可以成功下载存储在 GitHub 上的大文件了。