我在Mac上开发并将其推送到Github。我通过SSH登录我的服务器,然后我将更改拉到服务器。我希望在我将它们推送到Github时自动将更改拉到服务器,这样我就可以使用此信息来保存文件.git / hooks / post-update
#!/bin/sh
echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo
cd /mydirector/html || exit
unset GIT_DIR
git pull
exec git-update-server-info
我还应该做些什么才能让它发挥作用?提前感谢您的回答。非常感谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
你需要意识到钩子在这个用例的服务器上无法正常工作。服务器无法知道你做了推送(除非你有github webhook设置和工作,在这种情况下,请查看@VonC的答案),因此更新的钩子需要是本地的。 Hooks实际上并非用于此目的,如下所述:Local executing hook after a git push?
您真正想要做的是将更改推送到github和服务器。最简单的方法就是推动两者。见pull/push from multiple remote locations
通常会将git-hook添加到服务器中,以便在您推送到服务器之后,服务器可以执行一些额外的操作(例如启动应用程序或其他内容)。 (这是一篇好文章:http://danbarber.me/using-git-for-deployment/)
但是,根据您的要求,您也可以使用post-receive脚本来执行推送。由于git不支持post-push git hook,因此必须在git存储库上运行。然而,Github不允许这些(当然出于安全原因,它们只允许webhooks)。但如果确实如此,你可以这样做:
#!/bin/sh
git remote add live git@mydomain.com:www/mysite
git push live master
exec git update-server-info
并确保将文件设置为可执行文件chmod a+x post-receive