最近给网站搞好了ICP备案和公安备案,今天添加公安备案标识和备案号的时候惊奇地发现不知为何服务器上的钩子触发不了了。差点喷出一口老血,先前忙活了大半天搞一个钩子上去,结果仍然不能实现自动化更新。于是干脆不做了,直接手动更新。

一、如何排查出钩子的问题

在本地修改好之后,现在本地端口查看是否达到预期效果;

在本地检查远程仓库是否正确;

1
git remote -v

提交本地修改;

1
2
3
4
5
6
7
8
9
10
#提交子模块(如有改动)
cd themes/butterfly
git add .
git commit -m "feat: 自定义主题样式"
git push -u origin dev
#提交整个仓库
cd ../..
git add themes/butterfly
git commit -m "chore: 更新子模块指向自定义 Fork"
git push origin main

记录本地提交哈希;

1
git log --oneline -1

在服务器工作区查看日志;

1
2
cd /www/wwwroot/www.xxxx
git log --oneline -1

此时发现两个仓库没有同步;

查看服务器裸仓库是否同步;

1
2
cd /home/git/repos/xxxx.git
git log --oneline -1

发现裸仓库和本地是同步的。

裸仓库有最新提交,但网站未更新,于是推断出问题在于钩子没有触发。

二、手动更新网站

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
cd /www/wwwroot/www.xxxx

# 1. 强制重置到裸仓库的最新状态

git fetch origin main
git reset --hard origin/main

# 2. 更新子模块

git submodule update --init --recursive

# 3. 确认子模块版本

cd themes/butterfly
git log --oneline -1
cd ..

# 4. 清理并重新生成

rm -rf public/ db.json .deploy_git/
npx hexo clean
npx hexo generate
cp -rf public/* ./

# 5. 强制刷新浏览器