php - 你如何在远程服务器上执行自动 git pull?

标签 php git

在我开始之前,我知道有很多问题与这个问题类似,但我真的很难找到一个简洁、安全的最佳实践,因为对它们的反馈千差万别。

我想做什么:

  1. 在开发分支的本地计算机上完成工作。
  2. 将更改推送到 git。 Git 发布到 webhook URL 并自动让我的远程服务器 pull 开发站点上的更改。
  3. 一旦经过质量检查并确认在开发站点上是正确的,将主分支推送到生产站点(与开发站点在同一台服务器上)。

我所在的位置:

我在本地机器和远程服务器上安装了 git。我可以将mods推送到开发分支到git。在远程服务器上,我可以 pull 更新,而且效果很好。问题是当从我的本地计算机推送更改时,我无法让远程服务器自动更新。

我的问题是:

  1. 对于远程服务器开发站点目录,我应该使用git init 还是git init --bare?我不打算在服务器本身上进行更新。我希望我的开发团队在本地工作并将模组推送到服务器。我认为我需要使用 git init,因为需要工作树来设置 git 存储库的远程别名,但我想确认一下。
  2. 我很确定来自 git 问题的 webhook 帖子是由于用户权限引起的。我怎样才能安全解决这个问题?我读过许多建议更新 git hook 文件的教程,但我觉得这似乎比我需要采取的措施更严厉。我希望能够让 webhook 命中一个 URL,该 URL 可以安全地提取文件,而无需添加大量代码(如果可能的话)。

我天生就是一名网络开发人员,所以 git 和系统管理员任务通常是我生存的祸根。同样,我知道这个问题与其他问题类似,但我还没有找到一个全面、简洁、安全和最合乎逻辑的方法来解决这个问题。我进行了大约 16 个小时,正式达到了“原地踏步,毫无进展”这一点。

最佳答案

您可以使用 GitHub 服务 Hook 轻松完成此操作。

您需要再创建一个文件来处理执行 git pull 的过程。添加一个名为 github.php 的新文件(或任何您想要的),并添加:

<?php `git pull`;

保存该文件,并将其上传到您服务器上的存储库目录。然后,转到 Services Hooks -> Post-Receive URL 并将 URL 复制到该文件,并将其粘贴到“Post-Receive URL”中,例如http://demo.test.com/myfolder/github.php

因此,当您推送时,GitHub 将自动访问此 URL,从而导致您的服务器执行 git pull

要查看更多详细信息,请转到 this tutorial

关于php - 你如何在远程服务器上执行自动 git pull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542158/

相关文章:

包含国家、州和城市的 PHP 库

javascript - 调整从事件目录中提取的照片的大小

git - 如何使git clone与ssh一起使用?

git - 为什么我看到已经删除的远程分支?

git - 为预生产环境调整 git-flow 模型

c++ - 始终使用 Visual Studio 中可用的最新工具集

没有密码的 Git 私有(private)仓库

javascript - 亚马逊购买需要 2 个用户登录

php - 尝试从 mysql 中选择行然后在同一个选择中查看值是否存在

php - mysql查询在两个表上搜索两个条件