我已经看过很多关于此的页面和帖子,但其中没有一个在我的Digital Ocean Droplet上起作用。
我有一个与Capistrano一起部署的实时Rails应用程序,这意味着我必须在部署前使用Git将其推送到服务器上。所以Git起作用了。但是,现在我想对站点进行一些更改,并且远程回购是最新的(已通过git log
验证),但Web目录不是最新的。
我知道我需要将新文件传送到该目录,但是如何?
挂钩/接收后:
#!/bin/sh
git checkout -f
娜达。我还运行了sudo ./post-receive
,以确保执行了接收后挂钩(是的,它是可执行的)。无输出。只是另一个CLI提示符。
为什么要使一个文件夹包含最新的git push如此困难呢?
假设您的钩子位于unset GIT_DIR
中的裸存储库(一个没有签出文件的存储库中,则您缺少myrepo.git/hooks
行
#!/bin/sh
unset GIT_DIR
cd /path/to/checkout/repository
git pull
git checkout -f
未设置将确保Git将您已检出的存储库视为当前存储库(而不是裸存储库)