hexo删除历史大文件


hexo删除历史大文件

在git hexo仓库中有一个超过100MB的文件,并且你不小心Commit后,会出现如下报错

remote: error: Trace: 0224239f8e73847812271f660f9977951bd9387c22167deff41b61998441cf36
remote: error: See https://gh.io/lfs for more information.
remote: error: File mymusic/XXX.mp3 is 169.72 MB; this exceeds GitHub’s file size limit of 100.00 MB

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To github.com:bigworldxld/bigworldxld.github.io.git
! [remote rejected] HEAD -> master (pre-receive hook declined)
error: failed to push some refs to ‘github.com:bigworldxld/bigworldxld.github.io.git’

当git仓库中添加&删除了大文件后, 历史记录仍然有该文件, 超过100MB的限制,而无法提交,寻找了一下这个文件,发现已经被删除,但是commit中还是有此文件的提交记录。

安装 git filter-repo

使用pip安装git filter-repo去消除历史文件

pip install git-filter-repo

执行清理XXX文件

若出现执行git命令报错:fatal: not a git repository (or any of the parent directories): .git

问题分析

没有初始化git本地版本管理仓库,在打开文件的子目录层级中不包含.git文件,所以无法执行git命令。解决方案

跳到包含git.sh的文件目录下,执行git初始化 ,进行初始化

git init

执行清理shared/log/cron.log文件

git filter-repo --invert-paths --path "shared/log/cron.log" --force

git gc:

git gc --prune=now

删除.deploy_git文件

重新提交

hexo clean
hexo g
hexo d

博客备份

hexo的封面图片和音乐信息需要提前备份好,避免清数据没有了!!!

在git push推送时出现remote: fatal: pack exceeds maximum allowed size问题,经过排查,是由于出现大文件,解决方法:把没用的大文件删除,然后进行分批次上传文件并进行提交即可。

remote: fatal: pack exceeds maximum allowed size
方法一:
增加Git的HTTP传输缓冲区大小。可以通过以下命令来增加限制:

git config –global http.postBuffer 524288000 # 设置为500 MiB

或者在当前仓库中设置:

git config http.postBuffer 524288000
方法二:
最近使用git pull代码时总遇到这个问题,记录下解决办法,仅供参考!这个问题主要还是因为git add中有大文件存在,最直接的办法是用git lfs上传。

最近使用git pull代码时总遇到这个问题,记录下解决办法,仅供参考!

这个问题主要还是因为git add中有大文件存在,最直接的办法是用git lfs上传。

1.安装git-lfs

sudo apt-get install git
git lfs install
  1. 将需要上传的文件加入git lfs track,取消用git lfs untrack
# 加入git lfs track,会在执行文件夹下产生.gitattributes
git lfs track "*.pth"
git add .gitattributes
git commit -m "add lfs track file" .gitattributes
# 取消git lfs untrack
git lfs untrack ".pth"

Git LFS 其他命令
显示当前被 lfs 追踪的文件列表

git lfs ls-files 

查看现有的文件追踪模式

git lfs track 

查看当前 git lfs 版本

git lfs version 

取消 LFS 的全局配置

git lfs uninstall

博客备份恢复

下载原始数据包

输入命令git clone -b main url (目前Git最新版本默认都是main,老版本是master),这里也可以选择你要拉取的分支到本地。

1.进入hexo根目录
2.直接把箭头指向的.deploy_gitpublic直接删除!

先依次执行:

hexo clean
hexo g
hexo d

在将public下需要的图片和音乐文件上传

hexo-renderer-marked 3.1.0 引入了一个新的选项,其允许你无需使用 asset_img 标签插件就可以在 markdown 中嵌入图片
https://github.com/hexojs/hexo-renderer-marked
如需启用:

_config.yml
post_asset_folder: true
marked:
  prependRoot: true
  postAsset: true

常见hexo错误

hexo Template render error: (unknown path) Error: expected end of comment, got end of file

FATAL Something’s wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Template render error: (unknown path)
Error: expected end of comment, got end of file

某一篇博客中可能存在”’{ #“字符串,去掉它,或者去掉”#”.

解决将Hexo部署到GitHub时报错:Error: Spawn failed
在进行修改后都需要重新执行hexo clean hexo g hexo d

方法一:检查网络连接
确保你的网络连接正常,可以连接到github
使用命令 ping github.com 检查能否连接到github
方法二:检查Git配置
检查deploy.repo
打开博客主目录配置文件 __config.yml
修改 deploy.repo 为正确的ssh key:

检查deploy.branch
打开博客主目录配置文件 __config.yml

修改deploy.branch为github上对应库的branch:

方法三: 删除.deplot_git文件夹
删除 .deplot_git文件夹
输入 git config –global core.autocrlf false
方法四: 检查github访问权限
使用命令 ssh -T git@github.com测试 SSH 连接
如果出现以下信息,意味着无法通过 22 端口进行 SSH 连接:
ssh: connect to host github.com port 22: Connection timed out
尝试使用命令 ssh -T -p 443 git@ssh.github.com ,将 SSH 连接的端口更改为 443
如果显示以下信息,意味着通过 443 端口成功进行了身份验证,但 GitHub 不提供 shell 访问权限:
Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.
现在,我们需要在 ~/.ssh/config 文件中覆盖 SSH 设置
在文件中添加以下内容,然后保存并关闭文件:

Add section below to it

Host github.com
Hostname ssh.github.com
Port 443
最后,再次尝试使用命令ssh -T git@github.com进行 SSH 连接
如果显示以下信息,可以正常连接到 GitHub
Hi xxxxx! You’ve successfully authenticated, but GitHub does not provide shell access.


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