使用Git push自动拉取远程服务器上的内容?

12

这是我的目标:

我有一个GitHub存储库,其中部分内容我想使其在Web上可视化。现在,我已在自己的服务器上克隆了存储库,并且它运行良好,但为了保持最新状态,我必须手动登录并拉取最新更改。

我不知道这是否是最好的想法(或最佳方法),但我希望远程服务器在有人推送到存储库时自动进行拉取操作。 GitHub使运行脚本变得非常容易,但我不确定如何在有人推送时进行拉取操作。

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

谢谢。

3个回答

3
如果运行脚本推送变化很容易,你可以设置钩子来推送:
从GitHub到你的Web服务器上一个空(裸)仓库。
从你的Web服务器上的裸仓库到你的“实时”仓库(工作树代表你的网站)。
随后,你可以将其与“实时”仓库上的钩子相关联,以在任何时候更新自己(通过“git merge”,将您的裸仓库内容合并到您的“实时”仓库中),只要你的裸仓库有推送。
这样你就能够获得你想要的结果:任何对于你的GitHub仓库的推送(我猜是特定的分支),都会触发你的“实时”Web服务器仓库的刷新。

1

我做了一件几乎完全以这种方式工作的东西,只是接收推送的“远程”存储库与之后拉取的存储库位于同一台机器上。确保两个存储库具有完全相同的用户权限是真实(并且很重要)的。(但这应该没问题;你不希望随意的人推送你的存储库。)无论如何,我只需要git post-update钩子调用一个为我执行拉取的shell脚本。唯一棘手的地方是必须清理环境(我使用env -i或者可以取消设置与git相关的变量),否则拉取会出现混乱。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接