Github+Hexo 博客搭建+解决各种奇怪问题
请注意版本信息,避免兼容性冲突。
Update 2025.8.30 今天确实不想开任何卷,正好本地博客环境要重新搭,所以整理一下
- 除说明外,这种无序引用的信息,均为在
Git Bash
命令窗口输入,注意空格。
出现问题可以尝试在 各种奇怪问题 中查找解决方案。
配置 Node.js
安装 Node.js
使用的版本为 v22.17.1
除了第二页点 Browse
设置安装路径,其他的都 next
就行。
更新 npm
最终使用版本为 11.5.2
为了防止后面出现各种奇怪问题,建议一开始直接更新好 npm。
打开命令窗口,
查看 npm 版本:
- npm --version
更新 npm:
- npm install -g npm
配置 Git
下载 Git
使用的版本为 2.50.0
第一页是声明直接 next
,第二页点 Browse
设置安装路径。
第三页自己用就直接 next
就行。
第四页设置开始菜单名称,默认是 Git,也可以选择不添加。
第五页设置默认编辑器,没有就点下面的蓝色字去官网下载,我选 Use Visual Studio Code
。
第六页设置仓库主干默认名称,选第一行是默认 master
。
第二行Override the defult branch name for new
是自选,我选择用 main
。
第七页选第二行 Git form the command ans also form 3-rd-party
。
第八页选第一行 Use bundled OpenSSH
。
第九页选第一行 Use the OpenSSL libray
。
第十页选第一行 checkout Windows-style,commit Unix-style line endings
。
十一页选第一行 Use MinTTY (the defult terminal of MSYS2)
十二页选第一行 Fast-forward or merge
。
十三页选第一行 Git Credential Manager
。
十四页选第一行 Enable file system caching
。
图片版
第三页图片翻译来自 mukes
配置用户名和邮箱
安装完成之后开始连接 Github
先建一个文件夹,作为自己博客的根目录,我建了一个叫 Hexo
。
点进去文件夹,右键,选择 Open Git Bash Here。
- git config --global user.name "你的 GitHub 用户名"
- git config --global user.email "你的 GitHub 邮箱"
创建 ssh 密钥
注意,使用 ssh 密钥仅是为了方便以后连接上传
如果你确实害怕安全性问题,或者希望每次输入账号密码,那么你可以不使用 ssh 密钥
- ssh-keygen -t rsa -C "你的 GitHub 邮箱"
第一个出现的输入,是设置密匙的存放位置,默认为 C:\Users\用户名\
。
如果默认,那么直接回车。
第二个出现的输入,是设置密匙的密码。如果你不想要密码,那么直接回车。
注意,输入密码时可以不会弹出密码显示,所以请记得自己输入了什么密码
第三个出现的输入,是确认密码。
创建好后,打开密钥存放的位置,用记事本打开 id_rsa.pub
,复制里面的内容。
打开 Github,选择 Settings -> SSH and GPG keys -> New SSH key
Title
输入密钥名称,下面的大框直接粘贴刚才复制的内容。
然后回到 Git Bash 的窗口测试连接,输入:
- ssh -T git@github.com
如果出现这个:
说明你是第一次连接则需要添加本地主机,输入 yes
,然后回车。此时你的密钥文件夹内会出现 known_hosts
文件。
如果设置了密码,那么你还需要根据提示输入你的密码。
最后出现这个说明你连接成功了:
配置 Hexo
本地安装 Hexo
在你的博客根目录下打开 Git Bash,输入:
- npm install -g hexo-cli
根据网络环境的差异,安装时间不定,有时会比较长,耐心等待就好了。
如果安装成功了,可以查看 Hexo 版本:
- hexo --version
初始化 Hexo
在自己的博客根目录文件夹里再建一个文件夹,用来放 Hexo 的程序,我建了一个叫 Blog
。
在新建的文件夹里打开 Git Bash 输入:
- hexo init
- npm install
耐心等待即可。完成后可以看到文件夹里多出了东西。
可以进行预览,先生成界面:
- hexo g
进行本地预览:
- hexo s
复制出现的那个网址,到浏览器里打开。
在 Git Bash 界面使用 Ctrl + C
关闭本地预览。
上传 Hexo 程序到 Github
在 Github 上创建一个新的仓库,名字是 你的用户名.github.io
。
注意 .github.io
不能更改,前面的前缀最好用你的用户名,可以避免很多奇怪的问题。
记得选择公开仓库。此时打开 https://你的用户名.github.io
就可以看到默认界面了。
在你的 Hexo 程序文件夹里打开 Git Bash 输入:
- npm install hexo-deployer-git --save
完成后打开文件 _config.yml
。
找到文件末尾的 Deployment
部分,修改为下面的信息:
这里注意你的 repo
后面的网址,在你仓库的 <>code
里可以看到。
根据自己选择的连接方式填写。因为我们刚刚创建了 ssh 密钥,所以我们用 ssh 连接。
然后到 Git Bash 中上传保存修改:
- hexo d
完成后需要将库默认分支设置为 _config.yml
配置中的分支名称:
然后调整源分支:
完成后,你可以查看 Actions
等待页面创建任务完成。
此时访问 用户名.github.io
就可以看到博客页面了。
博客迁移
原电脑的工作
其实你完全可以把博客的整个文件夹都传到一个私密仓库里,这是最方便快捷的。
- 创建一个文件夹当本地仓库,
git init
把它变成仓库。 - 把需要的项目复制到文件夹里,
git add .
添加进缓存区。 git commit -m "注释内容"
提交到仓库。- 创建好 ssh 密钥,通过 https 链接本地仓库和远端仓库。
- 如果远端仓库是空的,就
git push -u origin master
,不是空的就git push origin master
。
详细点,
保留文件(夹):
- _config.yml:站点配置
- _config.landscape.yml:Landscape 主题的配置文件,Landscape 是 Hexo 的默认主题。
- package.json:说明使用那些包
- package-lock.json:文件是一个自动生成的文件,记录了整个项目的完整依赖树的具体版本信息。这确保了,不论何时、何地运行 npm install,都将安装完全相同版本的依赖。它帮助开发者避免由于依赖版本不同而导致的潜在问题。
- scaffolds:文章的模板
- source:自己写的博客文件
- themes:主题
- .gitignore:限定在提交的时候哪些文件可以忽略
删除文件(夹):
- .git:无论是在站点根目录下,还是主题目录下的.git文件,都可以删掉。
- node_modules:在用npm install会重新生成
- public:hexo g会重新生成
- .deploy_git:在使用hexo d时也会重新生成
- db.json文件
新电脑的工作
安装 Node.js,安装 Git,设置 ssh 密钥。
创建好同名文件夹,并在其中安装好 Hexo 和 npm。
然后在根目录使用 https 连接克隆你的仓库,不要用 ssh 大概率会卡飞(至少我每次都会卡飞,使出浑身解数依然难以战胜)。
然后你可以把连接再改回 ssh(我不知道这有什么意义,但是我 clone 用 ssh 真的会起飞)。
先更改连接方式:
- git remote set-url origin git@自己填
然后查看成功没:
- git remote -v
然后尝试 pull 和 push 验证连接。
各种奇怪问题
1)Git 传输速度过慢
Git 自己的端口太不稳定了,能不能连上好多时候靠运气。
如果你有梯子,希望走梯子的流量,那么需要更改 GIt 的端口:
- git config --global http.proxy http://127.0.0.1:梯子端口
- git config --global https.proxy http://127.0.0.1:梯子端口
2)Hexo Init 失败:WARN git clone failed. Copying data instead
先 ping 一下 github 看看有没有超时,然后尝试更换更稳定的梯子和网络。
或者用这个:
- npx hexp init 文件夹名称
大概率能解决问题。
3)npm install 报错:npm WARN deprecated
查看 npm 版本:
- npm --version
更新 npm:
- npm install -g npm
4)git pull 显示 Already up-to-date 但文件实际并没有更新
先查看你处于哪个分支,确保分支正确:
- git branch
然后看看缓存区和工作区有没有东西:
- git status
如果缓存区和工作区有东西,先放弃所有缓存:
- git reset HEAD .
再放弃所有没加入缓存区的修改:
- git checkout .
如果你确信远程仓库更新了,那可以尝试强制拉取覆盖;
- git fetch --all
- git reset --hard origin/main
最后尝试 pull。
5)ssh 连接报错:Error loading key: error in libcrypto
大概率就是纯格式问题。
把密钥放到 vscode 上,选右下角的 CRLF,在弹出来的窗口上选 LF,保存。
然后再试,大概率就可以了。
参考资料
有好多东西我忘了在哪找的了。