我想自动将提交的文件复制到某个文件夹,以便可以在浏览器中查看它们,但我想这样做而不必创建一个镜像主存储库的裸存储库(如图所示{{3我想在提交时发生这种情况。
是否有任何简单的方法可以创建一个钩子来读取哪些文件已经提交并在实时网络服务器上复制/更新它们?
例如:我有一个名为/example.com的文件夹和一个git存储库。我希望当我在存储库中提交index.html时,来自/example.com的相应index.html文件将使用提交文件的内容进行更新
答案 0 :(得分:24)
执行此操作的一种好方法是创建一个运行post-commit
的{{1}},其工作树设置为Web服务器公开的目录,并且git目录设置为{{1}您的开发存储库中的目录。例如,您可以创建一个git checkout -f
文件:
.git
请注意这一点 - .git/hooks/post-commit
表示git可能会移除或覆盖文件,使#!/bin/sh
unset GIT_INDEX_FILE
export GIT_WORK_TREE=/example.com/
export GIT_DIR=/home/whoever/development/web-project/.git/
git checkout -f
与您最近提交的树匹配。
(记住也要使-f
文件可执行。)