使用 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 用户具有相应的权限