今天想提交项目代码时发现文件.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