问题

除非学生认证或者购买专业版,否则github不再支持私有仓库部署gh-pages了

补充一嘴,现在这个github学生认证真难弄,搞半天不行,索性不弄了

解决思路

既然不支持私有仓库,那我们就迁移到公开仓库呗

当然也不是全部迁移,可能我们并不想公开我们的全部代码,只想公开部署分支的静态页面内容,所以这里就按照这样思路去尝试了

具体解决

  1. 首先,我们要创建一个新的公开仓库,名字就是博客地址:xxx.github.io(如果原来私有仓库已经用了,可以把原仓库名字改了)
  2. 生成 Personal Access Token:
    1. 进入 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
    2. 点击 “Generate new token” → “Generate new token (classic)”
    3. 设置过期时间(建议选 “No expiration”)
    4. 勾选权限:repo、workflow
    5. 生成并复制 token
  3. 在源仓库添加 Secret:
    1. 进入你的 Hexo 源码仓库(不是目标仓库)
    2. Settings → Secrets and variables → Actions
    3. 点击 “New repository secret”
    4. Name: ACCESS_TOKEN
    5. Value: 粘贴刚才复制的 token
  4. 然后嘞,需要在每次push到原来仓库的时候,进行同步,具体就是gh-pages分支同步到新的这个公开仓库(分支随意,我这里是main)。在源仓库部署脚本的基础上,添加
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
- name: 推送到公开仓库的main分支
run: |
git config --global user.email "xxx"
git config --global user.name "xxx"
# 克隆目标公开仓库到临时目录
git clone https://${{ secrets.ACCESS_TOKEN }}@github.com/xxx/xxx.github.io.git public_repo
cd public_repo

# 确保在main分支
git checkout main

# 删除除.git外的所有文件(保留.git目录)
# find . -maxdepth 1 ! -name '.git' ! -name '.' -exec rm -rf {} + 2>/dev/null || true

# 复制新生成的静态文件
cp -r ../public/* . 2>/dev/null || echo "没有文件可复制"

# 添加所有文件到Git
git add .

# 检查是否有更改需要提交
if git diff-index --quiet HEAD --; then
echo "没有更改需要提交"
else
# 提交更改
git commit -m "Deploy: ${{ github.event.head_commit.message || 'Auto deploy' }} - ${{ github.sha }}"

# 推送到远程main分支
git push origin main
fi
  1. 最后就是在这个新仓库的设置页面,配置gh-page就好啦