在 Git 的管理机制中,控制“哪些本地文件不需要上传到 GitHub”是通过博客根目录下的一个特殊配置文件 —— .gitignore 来实现的。

如果你在执行 git add . 时不想把几万个缓存和依赖文件(如 node_modules)打包进去,只需要在根目录下配置好这个文件。

以下是完整的操作方法和针对 Hexo 博客最标准的配置模版:

第一步:在博客根目录创建 .gitignore 文件

  1. 打开你本地的博客根目录。
  2. 检查是否已经存在一个名为 .gitignore 的文件(注意前面有一个点 .,在 Mac 上可能是隐藏文件,可以用 Command + Shift + . 显示隐藏文件)。
  3. 如果没有,直接在 VS Code、文本编辑器中新建一个文件,保存并起名为 **.gitignore**(没有任何后缀名)。

第二步:将忽略规则复制进去

打开 .gitignore 文件,把下面这段专门针对 Hexo 博客的标准忽略规则粘贴进去并保存:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 忽略 Node.js 依赖库(绝对不能上传,云端构建会自动下载)
node_modules/

# 忽略 Hexo 编译生成的静态网页文件夹(云端会自动执行 hexo g 生成它)
public/

# 忽略 Hexo 的本地缓存和临时文件
.deploy*/
.log
_multiconfig.yml
db.json

# 忽略编译日志和临时缓存
.DS_Store
Thumbs.db
.cache/

保存后,Git 就会自动把上面写的所有文件夹和文件拉入“白名单外”,后续任何的 git add . 或提交命令都会自动彻底跳过它们。

第三步:GitHub Actions

1:在源码中创建自动化脚本

  1. 在你本地的 Hexo 博客根目录下,创建一串连续的文件夹,路径为:.github/workflows/
  2. 在该文件夹下新建一个文件,起名为 **deploy.yml**。
  3. 用编辑器打开它,将以下标准的 Hexo 编译生成脚本粘贴进去:

github下面的自动编译脚本代码

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
40
41
42
43
44
name: Hexo Deploy Bot

on:
push:
branches:
- main # 监听的主分支。如果你本地和 GitHub 的源码分支叫 master,请改为 master

jobs:
build-and-deploy:
runs-on: ubuntu-latest

steps:
# 1. 签出代码
- name: Checkout Source Code
uses: actions/checkout@v4
with:
submodules: true # 非常关键:如果你的 themes/stellar 是用子模块引入的,这里能保证自动拉取主题

# 2. 设置 Node.js 环境
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # 推荐使用稳定的 Node 20 版本
cache: 'npm'

# 3. 安装 Hexo 依赖环境
- name: Install Dependencies
run: |
npm ci

# 4. 核心步骤:清除并生成最新的 public 文件夹
- name: Generate Public Files
run: |
npx hexo clean
npx hexo generate

# 5. 自动将生成的 public 文件夹推送到 gh-pages 分支保存
- name: Deploy Public to Branch
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: public # 要上传的文件夹名字
branch: gh-pages # 存放纯静态编译文件的目标分支
token: ${{ secrets.GITHUB_TOKEN }} # 自动调用的临时凭证,无需手动配置
clean: true # 每次都清空旧文件,保持代码最干净

2:给予 GitHub 脚本“写入权限”

默认情况下,GitHub 的 Actions 机器人只有读取权限,没有权限把你编译好的 public 重新塞回你的仓库分支里。我们需要去后台开启它:

  1. 打开你的 GitHub 博客仓库页面。
  2. 点击顶部的 Settings(设置)
  3. 在左侧菜单栏中,找到 Actions -> 点击 General
  4. 滚动到页面底部,找到 Workflow permissions(工作流权限)
    • 将默认的 Read repository contents and packages permissions * 修改切换为:**Read and write permissions(读写权限)**。
  5. 点击 Save 保存。

3:提交并触发第一次自动编译

在本地终端(Terminal)运行命令,将这个新做的 .github/workflows/deploy.yml 及全量本地文件推送到 GitHub 上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 初始化本地 Git 仓库(如果之前从来没有初始化过的话)
git init

# 2. 将本地所有文件(已被 .gitignore 忽略的除外)添加到暂存区
git add .

# 3. 提交到本地版本库,并备注一条说明
git commit -m "feat: initialize hexo stellar private source"

# 4. 强制将本地主分支的名称规范更改为 main
git branch -M main

# 5. 关联本地仓库与 GitHub 远程仓库(请把下面这行的网址换成你刚才复制的那个链接!)
git remote add origin https://github.com/你的用户名/my-blog-source.git

# 6. 将本地代码第一次强制推送到 GitHub 的 main 分支
git push -u origin main

🎯 成果验证与后续使用

当你完成这一步后,你可以立刻在浏览器中打开你的 GitHub 仓库,点击顶部的 Actions 选项卡。

你会发现有一个叫 Hexo Deploy Bot 的任务正在转圈跑马灯。当它变成绿色勾勾 $\checkmark$ 时,说明它已经在后台帮你完成了以下事情:

  1. 打开你仓库的分支列表,你会惊喜地发现除了 main 之外,自动多出了一个 gh-pages 分支。
  2. 切换到 gh-pages 分支,里面没有任何的 sourcethemesyml 配置文件,全部都是纯粹编译出来的 index.htmlcssjspublic 核心文件。