【问题标题】:Automatically pulling on remote server with Git push?使用 Git 推送自动拉取远程服务器?
【发布时间】:2010-03-08 08:27:39
【问题描述】:

这是我想要做的:

我有一个 GitHub 存储库,我想让其中的一部分在网络上可见。现在我已经在自己的服务器上克隆了存储库,它运行良好,但为了保持最新,我必须手动登录并提取最新的更改。

我不确定这是否是最好的想法(或最好的方法),但我希望远程服务器在有人推送到存储库时自动拉取。当有人推送时,GitHub 可以很容易地运行脚本,但是一旦有人这样做,我不知道如何拉取。

为了简单起见,我使用了 PHP,但是由于权限的原因,仅仅执行 git pull 这样的操作自然是行不通的。这是一个坏主意还是有另一种方法可以实现我想做的事情?这似乎是一种常见的设置,但我不确定。

谢谢。

【问题讨论】:

    标签: php git github mirroring pull


    【解决方案1】:

    如果很容易运行脚本来push,你可以设置钩子来推送:

    • 从 GitHub 到您的 Web 服务器上的裸(空工作树)存储库
    • 从您的网络服务器上的裸存储库到您的“实时”存储库(带有代表您网站的工作树)

    然后,您可以将其与“实时”存储库上的挂钩关联以更新自身(通过“git 合并”,将裸存储库的内容合并到“实时”存储库),只要您的裸存储库推送任何内容。

    你会得到你想要的效果:任何推送到你的 GitHub 存储库(我想是针对某个分支)都会触发你的“实时”网络服务器存储库的刷新。

    【讨论】:

      【解决方案2】:

      我已经制作了几乎完全以这种方式工作的东西,除了接收推送的“远程”存储库与随后拉取的存储库位于同一台机器上。确实(也很重要)完全相同的一组用户对两个存储库都具有权限。 (但这应该没问题;您不希望随机的人推送您的存储库。)无论如何,我只是让 git post-update 挂钩调用一个 shell 脚本来为我拉取。一个棘手的地方是你必须清理环境(我使用了env -i,或者你可以取消设置 git 相关的变量),否则 pull 会混淆。

      【讨论】:

        【解决方案3】:

        这是一个 WebHook,也许可以帮助您。我认为它完全符合您的要求:Remote Server WebHook

        【讨论】:

          猜你喜欢
          • 2013-02-09
          • 1970-01-01
          • 2011-12-29
          • 1970-01-01
          • 2018-12-10
          • 1970-01-01
          • 2013-03-10
          • 1970-01-01
          • 2018-01-12
          相关资源
          最近更新 更多