瘦身.git,处理项目中.git文件夹过大的问题

处理项目中.git文件夹过大的问题

出现原因: .git文件主要用来记录每次提交的变动,当我们在提交时包含大文件时,会被git记录下来, .git文件越来越大、越来越繁重。。。

下面是解决方法步骤:

一:将项目切换至master分支

// git checkout master

二:删除存储的大文件

方法(1):
#1.找出大文件的前5个
   git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
#2.找出大文件的文件名
   git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007
#3.清除该文件的所有历史记录并强制刷新到所有分支(慎重,需要管理员权限,否则报错)
   git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch <your-file-name>' --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
#4.强制更新远程仓库(这一步执行了,就真没救了。请确认已备份。)
  git push --force --verbose --dry-run
  git push --force

方法(2):前提是知道要删除的大文件

#1.从提交历史中删除所有的zip文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.zip' --prune-empty --tag-name-filter cat -- --all
#2.从提交历史中删除dist文件夹中的所有文件
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch uploads/' --prune-empty --tag-name-filter cat -- --all
#3.清除残余的 objects并通过GC回收空间
	rm -rf .git/refs/original/
   git reflog expire --expire=now --all
   git gc --prune=now
   git gc --aggressive --prune=now
#4.强制更新远程仓库(这一步执行了,就真没救了。请确认已备份。)
  git push --force --verbose --dry-run
  git push --force

三:查看瘦身后的.git文件大小

du .git -lsh 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值