使用 git hooks 自动部署博客

注意
本文最后更新于 2022-02-11,文中内容可能已过时。

裸仓库文件被以修改的方式保存在数据库中, 如果我要使用这些文件, 比如部署博客, 还需要 clone 和 pull. 手动运行的话非常麻烦. git 提供了 hooks, 可以解决这个问题.

在裸仓库下找到 hooks 文件夹, 下面有一些例子, 其中, 我们需要用到的是 post-receive 这个.

注意
post-receive 是新的东西, 可能例子里没有, 它是用来替代 post-update 的方案.

post-receive 会在收到文件之后执行. 部署博客(本质上是静态网页)的话非常方便, 只需要把文件取出来就行. 剩下的交给 Nginx.

新建 post-receive, 输入以下内容:

#!/bin/sh
GIT_WORK_TREE=/your/dir git checkout -f

GIT_WORK_TREE 设置文件存放位置, 之后运行 git checkout -f 用来强制更新文件.

技巧
对于更复杂的应用部署, 需要执行其他功能, 直接在脚本文件中写 shell 命令即可.
注意
设置的位置需要 git 用户有权限. 同理其中执行的任何 shell 命令也都需要 git 用户具有相应的权限