Git:从存储库中自动拉出?

问题描述 投票:70回答:5

有没有办法设置git,以便它从远程仓库中侦听更新,并在每次更改时拉出?用例是我想使用git部署一个Web应用程序(所以我得到了部署应用程序的版本控制),但是想把“中央”git repo放在Github上,而不是放在Web服务器上(Github的界面真是太棒了) 。

有没有人得到这个工作? Heroku是如何做到的?我的Google-fu未能给我任何相关结果。

git deployment
5个回答
39
投票

Git有“钩子”,可以在其他动作之后执行的动作。你似乎在寻找的是“后接收钩”。在github管理员中,您可以设置一个后期接收网址,每当有人推送您的仓库时,该网址都会被点击(有效负载包含刚推送的内容的数据)。

对于它的价值,我不认为自动拉动是一个好主意 - 如果出现错误被推到你的分支怎么办?我会使用像capistrano(或等价物)这样的工具来做这些事情。


16
投票

在unix上,你可以在你的机器上创建调用“git pull”(每天或每周或其他)的cron作业。在Windows上,您可以使用任务调度程序或“AT”命令来执行相同的操作。


3
投票

有像Jenkins或Bamboo这样的持续集成程序,可以检测提交和触发操作,如构建,测试,打包和部署。他们做你想做的事,但他们很重要的依赖,很难配置,最后他们可能会对git存储库使用定期检查,这会产生与每分钟调用gron pull一样的效果。


1
投票

您可以通过执行以下操作来编写脚本来实现此目的:

  1. 获取远程HEAD提交ID
  2. 将id与本地HEAD进行比较
  3. 如果它们不同,请使用git pull并使用deploy命令
  4. 如果相同,通过
  5. 编写一个cron作业来执行脚本(注意:防止重复执行。)

0
投票

我知道这个问题有点老了,但你可以使用windows日志和git使用webhook和php自动调整你的项目(假设你的项目涉及一个网络服务器。请在这里查看我的要点:https://gist.github.com/upggr/a6d92e2808e9628ebe0d01fd93569f4a

© www.soinside.com 2019 - 2024. All rights reserved.