【问题标题】:How do I setup a git hook to pull from Github?如何设置一个 git hook 从 Github 中提取?
【发布时间】:2014-11-07 00:34:50
【问题描述】:

我在我的 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

我还应该怎么做才能让它工作?提前感谢您的回答。将不胜感激。

【问题讨论】:

  • 你也可以只推送到 github 和服务器

标签: git github githooks


【解决方案1】:

您也可以声明一个webhook on GitHub,以生成一个event payload,您的服务器上的进程可以监听该event payload

那个进程(一个监听器)将负责触发git pull

您会发现此类监听器的各种示例,例如:

【讨论】:

    【解决方案2】:

    你需要意识到这个用例的钩子不能在服务器上正常工作。服务器无法知道您进行了推送(除非您有github webhook 设置和工作,在这种情况下,请查看@VonC 的回答),因此更新的挂钩需要是本地的。 Hooks 真的不适合此目的,如下所述:Local executing hook after a git push?

    您真正想做的是将您的更改推送到 github 和您的服务器。最简单的方法就是推动两者。见pull/push from multiple remote locations

    通常将 git-hooks 添加到服务器,以便在您推送到服务器后,服务器可以做一些额外的事情(比如启动应用程序或其他东西)。 (这里有一篇好文章:http://danbarber.me/using-git-for-deployment/


    但是,根据您的要求,您也可以使用 post-receive 脚本来简单地进行推送。由于 git 不支持 post-push git 挂钩,因此必须在 git 存储库上运行。然而,Github 不允许这些(当然,出于安全原因,它们只允许 webhook)。但如果是这样,你可以这样做:

    #!/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

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 2022-01-13
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多