当前位置:   article > 正文

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

.git pack-f0dd6b3dcaded3fc56231fa67bb8296b702b50de.pack

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

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

下面是解决方法步骤:

一:将项目切换至master分支

// git checkout master
  • 1

二:删除存储的大文件

方法(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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

方法(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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

du .git -lsh 

  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/895576
推荐阅读
相关标签
  

闽ICP备14008679号