引言

请在云服务器上先搭建Git服务,详见博客链接:Hexo云服务器搭建Git服务

我们在本地的将Hexo博客文件 push 到服务器时,只是提交到了创建的 Git 服务器创建的裸仓库中。还需要进入服务器的 web 运行目录,通过 git pull 命令拉取到 web 目录。为了实现过程的自动化,可以使用 Git 中的钩子来解决该问题。

Git 钩子介绍

Git 钩子 (hooks) 是在 Git 仓库中特定事件 (certain points) 触发后被调用的脚本。通过钩子可以自定义 Git 内部的相关(如 git push)行为,在开发周期中的关键点触发自定义的行为。

创建 Git 钩子

服务端钩子就是你 push 之后的服务器要运行的脚本。

有四个钩子:

  • pre-receive 接受之前
  • update 更新之前
  • post-update 更新之后
  • post-receive 接受之后

在 /home/git/blog.git/hooks 目录下新建 post-receive

1
vim /home/git/blog.git/hooks/post-receive

写入以下文本:

1
git --work-tree=/home/git/blog --git-dir=/home/git/blog.git checkout -f

赋予执行权限:

1
chmod +x /home/git/blog.git/hooks/post-receive

使用方法

在本地通过hexo deploy之后,即可实现在web页面目录下自动同步更新Hexo博客数据。