繁体   English   中英

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

[英]How do you do an automatic git pull on remote server?

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

我想做的事:

  1. 在开发分支的本地机器上完成工作。
  2. 将更改推送到 git。 Git 发布到 webhook URL 并自动让我的远程服务器在开发站点上提取更改。
  3. 在开发站点上通过 QA 并确认正确后,将主分支推送到生产站点(与开发站点在同一台服务器上)。

我在哪里:

我在本地机器和远程服务器上安装了 git。 我可以将 mod 推送到开发分支到 git。 在远程服务器上,我可以拉取更新,它就像一个魅力。 问题是当从我的本地机器推送更改时,我无法让远程服务器自动更新。

我的问题是:

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

我本质上是一名 Web 开发人员,所以 git 和 sysadmin 任务通常是我存在的祸根。 同样,我知道这个问题与其他问题类似,但我还没有找到一种全面、简洁、安全且最合乎逻辑的方法来解决这个问题。 我已经大约 16 个小时了,并且已经正式达到了“无进展地兜圈子”的点。

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

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

<?php `git pull`;

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

所以,当你推送时,GitHub 会自动访问这个 URL,从而导致你的服务器执行git pull

要查看更多详细信息,请转到本教程

我有同样的问题,代码和开发技能强,系统管理员技能弱。 当我终于准备好推送代码时,我不得不询问GitHub代表他们建议的方法是什么,他们回复了 Capistrano。 它是一个Ruby应用程序,可以在远程服务器上运行命令(例如 git pull),以及您可以想象的几乎任何其他命令。

您可以阅读以下几篇文章以获取更多信息:

不会撒谎,学习曲线非常陡峭,但是一旦您开始使用 Capistrano,您就会发现它非常适合推送代码。 我在 Symfony 中开发我的应用程序,并且我有我的 Capistrano 设置来提取代码、清除缓存和清除日志文件,所有这些都来自我本地机器的一个命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM