.git文件夹太大的解决方法


今天想提交项目代码时发现文件.git文件夹越来越大, 然后花点时间研究了下,在网上查了几篇博文,成功把文件大小缩小了4倍。这里整理了一下思路,大致的意思就是找到git历史记录提交了哪些大文件. 然后重构git,让pack包变小。

一、打开终端

进入项目文件夹,鼠标右键git bash here进入终端

二、查找大文件

命令如下,查找大小前五的文件。

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

删除指定大文件

我这里是因为第一次提交更新壁纸,忘记把壁纸压缩了,一张壁纸7MB,导致历史记录文件变大。

git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch 'themes/hexo-theme-matery/source/medias/banner'" --prune-empty --tag-name-filter cat -- --all
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin

这里因为是删文件夹,所以使用的命令是rm -rf,如果是删一个文件,只需要rm就行了。

四、重新标记过期的缓存文件

git reflog expire --expire=now --all

五、回收过期的缓存

使用gc命令清理空间

git gc --prune=now

六、查看文件大小

git count-objects -v
du -sh .git

第一个命令返回pack包大小。
第二个命令返回.git文件夹大小。

七、重新提交

要用--force命令强制提交到远程仓库。

git push --all --force origin

其他

push失败

如果遇到push不了的,可以尝试重新设置与远程仓库的连接。

git remote set-url origin ssh://git@github.com/limitlm/blog.git

然后使用git remote -v命令查看是否更改正确。
重新push应该就能成功了。


git ssh和https切换

从ssh切换至https

git remote set-url origin https://email/username/ProjectName.git

从https切换至ssh

git remote set-url origin git@email:username/ProjectName.git

文章作者: 泷少
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 泷少 !
评论
  目录