我想自动将提交的文件复制到某个文件夹,以便可以在浏览器中查看它们,但我想这样做而不必创建一个镜像主存储库的裸存储库(如here所示)和我希望这在提交时发生。
是否有任何简单的方法来创建一个钩子来读取已提交的文件并在实时网络服务器上复制/更新它们?
例如:我有一个名为 /example.com 的文件夹和一个 git 存储库。我希望当我在存储库中提交index.html时,/example.com中相应的index.html文件将被更新为所提交文件的内容
执行此操作的一个好方法是创建一个运行
post-commit
的 git checkout -f
,并将工作树设置为 Web 服务器公开的目录,并将 git 目录设置为开发存储库中的 .git
目录。例如,您可以创建一个 .git/hooks/post-commit
文件来执行以下操作:
#!/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
意味着 git 可能会删除或覆盖文件以使 /example.com/
与您最近提交中的树匹配。
(请记住使
.git/hooks/post-commit
文件也可执行。)