需求:在 Hexo 个人网站创建后,想要实现 Hexo 个人网站的备份,同时方便在不同的设备上(同步)修改该Hexo网站:

👇️ 总结 👇️

✔️ 方案一:在原Hexo存储库中 创建新分支 存放Hexo个人网站备份

✔️ 方案二:新建存储库专用于备份Hexo个人网站

方案一:在原Hexo存储库中 创建新分支 存放Hexo个人网站备份

Hexo博客工程与部署分支分离管理的流程

一、需求背景

需实现Hexo博客的双分支管理

  • master分支:保留原有功能,作为Hexo生成的静态博客页面部署分支;
  • Hexo分支:存储完整的Hexo本地工程文件(配置、文章、主题等),用于工程备份与维护。

二、前置准备

  1. 已在GitHub创建仓库(示例:xxxx/xxxx.github.io);
  2. 本地已安装Git、Node.js及Hexo环境;
  3. 本地Hexo工程目录:D:\Website\Blog

三、具体操作流程

步骤1:初始化本地Git仓库

在Hexo工程目录终端(PowerShell)执行:

1
2
3
4
5
6
7
8
9
# 进入工程目录
cd D:\Website\Blog

# 初始化Git仓库
git init

# 配置Git全局信息(替换为你的GitHub账号)
git config --global user.name "你的GitHub账号"
git config --global user.email "你的GitHub邮箱"
步骤2:创建并切换到Hexo分支

因远程无Hexo分支,需先创建本地分支:

1
2
# 创建并切换到Hexo分支
git checkout -b Hexo

终端提示Switched to a new branch 'Hexo'表示操作成功。

步骤3:配置.gitignore过滤冗余文件

创建.gitignore文件过滤不必要的内容(避免提交依赖、缓存等文件):

1
2
# 生成.gitignore文件并写入过滤规则
"node_modules/`npublic/`n.deploy_git/`n.github/`ndb.json`n*.log`n.idea/" | Out-File -Encoding utf8 .gitignore

稍微详细一些的 .gitignore文件 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Hexo 部署/缓存文件(核心过滤项)
.deploy_git/
public/
db.json

# 依赖/日志文件
node_modules/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# IDE/系统冗余文件
.idea/
.vscode/
.DS_Store
Thumbs.db
步骤4:提交Hexo工程文件到本地Hexo分支
1
2
3
4
5
# 添加所有符合过滤规则的文件到暂存区
git add .

# 提交暂存区文件(备注信息需清晰)
git commit -m "init: 提交完整Hexo工程到Hexo分支"
步骤5:关联远程GitHub仓库并推送Hexo分支
1
2
3
4
5
6
7
8
9
10
# 删除旧的远程关联(若有)
git remote rm origin

# 关联HTTPS格式的远程仓库(替换为你的仓库地址)
git remote add origin https://github.com/xxxx/xxxx.github.io.git
# ssh格式(任选其一)
git remote add origin git@github.com:xxxx/xxxx.github.io.git

# 推送Hexo分支到远程并建立关联
git push -u origin Hexo

推送时需输入:

  • 用户名:你的GitHub用户名(如immortal3180);
  • 密码:GitHub Personal Access Token(需提前在GitHub生成,勾选repo权限)。
修复SSH连接

若SSH端口22被拦截,修改SSH配置:

1
2
# 编辑SSH配置文件
notepad C:\Users\你的Windows用户名\.ssh\config

写入以下内容:

1
2
3
4
5
Host github.com
Hostname ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_ed25519

验证SSH连接:

1
ssh -T git@github.com

提示Hi xxxx! You've successfully authenticated...表示连接成功,再执行推送:

1
git push -u origin Hexo
步骤6:确认master分支部署功能正常

检查Hexo配置文件_config.yml中的部署配置:

1
2
3
4
deploy:
type: git
repo: https://github.com/xxxx/xxxx.github.io.git # 或SSH地址
branch: master # 确保静态文件推送到master分支

测试部署:

1
hexo clean && hexo g && hexo d

四、日常维护流程

1. 更新Hexo工程文件(Hexo分支)
1
2
3
4
5
6
7
8
9
10
11
# 切换到Hexo分支
git checkout Hexo

# 添加修改的文件
git add .

# 提交更新(备注需明确)
git commit -m "update: 新增文章《XXX》/修改主题配置"

# 推送到远程Hexo分支
git push
2. 部署博客(master分支)

无需手动操作master分支,执行Hexo部署指令即可:

1
hexo clean && hexo g && hexo d

五、验证成果

  1. 登录GitHub仓库,查看branches选项,确认Hexo分支存在且包含工程文件;
  2. 访问https://xxxx.github.io,确认博客页面正常显示。

六、常见问题解决

  1. 推送时提示权限不足:检查GitHub Token权限或SSH密钥配置;
  2. 分支切换失败:使用git checkout -b 分支名创建新分支,避免直接切换不存在的分支;
  3. 文件未过滤:更新.gitignore后执行git rm -r --cached .清除已暂存的冗余文件。

方案二:新建存储库专用于备份Hexo个人网站

你现在需要把 Hexo 工程推送到新创建的工程仓库master 分支(而非之前的 Hexo 分支)

适配需求:推送 Hexo 工程到新仓库的 master 分支

一、操作前提

  1. 已在 GitHub 新建工程仓库(示例:xxxx/hexo-blog-source);
  2. 本地 Hexo 工程目录:D:\Website\Blog
  3. 已配置好 .gitignore 过滤冗余文件(核心工程文件已准备就绪)。

二、具体操作步骤

步骤1:切换到本地 master 分支(或创建并切换)

如果本地没有 master 分支,先创建;已有则直接切换:

1
2
3
4
5
6
7
8
# 进入 Hexo 工程目录
cd D:\Website\Blog

# 方案1:本地无 master 分支 → 创建并切换
git checkout -b master

# 方案2:本地已有 master 分支 → 直接切换
# git checkout master
步骤2:关联新的工程仓库(替换为你的仓库地址)

先删除旧的远程关联,再关联新仓库:

1
2
3
4
5
6
7
8
# 删除旧的远程仓库关联(原博客仓库)
git remote rm origin

# 关联新工程仓库的 master 分支(HTTPS 方式,新手推荐)
git remote add origin https://github.com/immortal3180/hexo-blog-source.git

# (可选)SSH 方式(需配置 SSH 密钥)
# git remote add origin git@github.com:immortal3180/hexo-blog-source.git
步骤3:提交 Hexo 工程文件到本地 master 分支
1
2
3
4
5
# 添加所有符合 .gitignore 规则的工程文件
git add .

# 提交文件(备注清晰,便于回溯)
git commit -m "init: 推送Hexo工程源码到新仓库master分支"
步骤4:推送本地 master 分支到新仓库的 master 分支
1
2
# 第一次推送需绑定本地与远程 master 分支(后续直接 git push 即可)
git push -u origin master
  • 推送时若弹出认证窗口:
    • 用户名:你的 GitHub 用户名(如 immortal3180);
    • 密码:GitHub Personal Access Token(不是登录密码,需提前生成并勾选 repo 权限)。
步骤5:确认原博客仓库的部署配置不变

修改 _config.yml,确保 Hexo 部署仍指向原博客仓库的 master 分支,避免博客访问异常:

1
2
3
4
deploy:
type: git
repo: https://github.com/xxxx/xxxx.github.io.git # 原博客仓库地址
branch: master # 静态文件仍推送到原仓库的 master 分支

三、验证操作结果

  1. 登录 GitHub 新工程仓库(hexo-blog-source):
    • 查看分支:确认 master 分支存在;
    • 查看文件:确认包含 Hexo 工程核心文件(_config.ymlsourcethemes 等),无 node_modulespublic 等冗余文件。
  2. 测试博客部署:
    1
    hexo clean && hexo g && hexo d
    确认静态文件仍推送到原仓库 xxxx.github.iomaster 分支,博客访问正常。

四、后续维护新仓库 master 分支的指令

当你修改 Hexo 工程(如新增文章、改主题配置)后,执行以下指令更新:

1
2
3
4
5
6
7
8
9
10
11
# 确保在本地 master 分支
git checkout master

# 添加修改的文件
git add .

# 提交更新(备注明确)
git commit -m "update: 新增文章《XXX》/修改主题配色"

# 推送到新仓库 master 分支
git push

总结

备份完成后,后续网站更新与维护的命令如下:

1
2
3
## Hexo 网站更新

hexo c && hexo g && hexo d
1
2
3
4
5
6
7
8
9
10
11
12
13
## Hexo 项目备份

# (可选) 确保在本地 master 分支
git checkout master

# 添加修改的文件
git add .

# 提交更新(备注明确)
git commit -m "update: 新增文章《XXX》/修改主题配色"

# 推送到备份仓库
git push
1
2
3
4
5
6
7
8
9
10
11
## 部分排错的命令

# 查看当前分支(确认是 master)
git branch

# 查看远程仓库关联(确认指向新备份仓库)
git remote -v

# 若关联错误,重新绑定新仓库
git remote rm origin
git remote add origin 新仓库地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
## 新设备下载 Hexo 项目 / 设备之间同步 Hexo 项目

# ========== 步骤1:克隆备份仓库到新设备 ==========
# 进入新设备的目标文件夹(比如 D:\Website\Blog)
cd D:\Website\Blog

# 克隆备份仓库(替换为你的新仓库地址)
git clone https://github.com/immortal3180/hexo-blog-source.git .
# 注意:末尾的 "." 表示克隆到当前文件夹,避免多一层目录(新手必加!)

# ========== 步骤2:安装 Hexo 运行依赖 ==========
# 安装项目依赖(根据 package.json 自动安装 node_modules)
npm install

# (可选)全局安装 Hexo 脚手架(确保 hexo 指令可用)
npm install -g hexo-cli

# ========== 步骤3:还原部署配置(关键!保证能推送到原博客仓库) ==========
# 检查 _config.yml 中的 deploy 配置,确保指向原博客仓库
# 若配置丢失/错误,手动修改 _config.yml:
deploy:
type: git
repo: https://github.com/immortal3180/immortal3180.github.io.git # 原博客仓库地址
branch: master # 静态文件部署分支

# ========== 步骤4:验证项目是否正常 ==========
# 本地启动 Hexo 服务,测试能否正常预览
hexo clean && hexo g && hexo s
# 浏览器访问 http://localhost:4000,能看到博客则说明环境正常

# ========== 步骤5:存档更新 - 推送 ==========
# 若在新设备修改了工程(比如新增文章),执行备份指令:
git add .
git commit -m "update: 新设备新增文章《XXX》"
git push

# ========== 步骤6:旧存档设备同步新存档 ==========
# 拉取origin远程仓库的master分支(默认主分支)到本地,--verbose显示合并过程中的差异
git pull origin master --verbose