我最近开始在我的日常工作流程中使用 Git,我真的很喜欢使用它。
我在我的 VPS 上名为 website.git 的文件夹下有一个裸在线 repo (git init --bare --shared),并在需要时从本地推送更改,这绝对没问题。现在,当我在本地存储库中保存数据时,我将更改推送到网上,但随后我也必须手动将文件移动到 public_html 文件夹中,正如您可以想象的那样,这真的很痛苦。
我尝试过使用http://toroid.org/ams/git-website-howto中描述的 git 钩子,但它的权限对我不起作用。
public_html 和 website.git 文件夹都归 www-data:developers 所有,但是当 post-receive 钩子启动时,它无法取消链接旧文件,并且任何新文件都自动归 jack:jack 所有,这是我使用 SSH 连接到服务器的用户。
我的 hooks/post-receive 文件是可执行的并且包含:
#!/bin/sh
GIT_WORK_TREE=/home/web/website.com/public_html git checkout -f
我的在线回购存储在
/home/web/website.com/website.git
我究竟做错了什么?