我正在使用个人项目作为我们在工作中的一些更高级的事情的实践。 我想要学习的事情之一是将公共git仓库中pipe理的项目直接发布到我的服务器上的子域。 理想情况下,我希望能够做到这样的事情:在terminal中键入git deploy将项目推送到实时托pipe。 是这样的可能吗? 我该怎么做?
这听起来像是你不问如何将项目推送到远程存储库 ,而是如何实际将其检入到文件系统的目录中,文件由Web服务器提供。
您需要在与Web服务器相同的机器上有一个远程存储库(更准确地说,是一台机器上的存储库,可以写入Web服务器可以访问的文件系统)。 您可以在该存储库中设置一个post-receive挂钩,这是一个脚本,每次将某个内容推送到存储库时都会运行。 post-receive hook应该运行一个git checkout命令,它将检查新推送的文件到实际的文件系统上,然后从那里它们可以被你的web服务器提供服务。 该脚本将如下所示:
#!/bin/bash git --work-tree=/path/to/document/root checkout -f # reload web server here, if you need to
我为自己的网站使用类似的设置,并且写了一篇描述它的博客文章 。 你可能想看看它,看看那里的信息是否有帮助。 除了现场服务器之外,我还使用临时服务器,但是如果您不这样做,我的文章将包含一些描述备用,简单设置的链接( 1,2 )。
在你的特殊情况下,因为你在Github上有一个远程仓库,所以你可能需要同时将更改推送到Github仓库和Web服务器上,这样两者总是同步的。 为此,可以使用git remote add-url命令将多个推送URL放入同一个远程,以便在运行git push时将它发送到Github和服务器远程。 (请参阅git help remote )或者,您可以考虑使用您的Github存储库作为临时存储库(如我的博客文章中所述),或者您可以手动ssh到您的Web服务器,并在您需要更新网站时进行更改。 后两种解决scheme将意味着您的Github存储库不一定与您的Web服务器同步; 如果你有时候把你不希望在你的网站上反映出来的Github更改的话,这将是可取的。