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,保存。
然后再试,大概率就可以了。
参考资料
有好多东西我忘了在哪找的了。

浙公网安备 33010602011771号