在 master 分支更改时自动更新本地 github 存储库

Automatically update local github repository on master branch change

我有一个存在于多个不同主机上的 github 存储库。我想弄清楚是否有某种方法可以让两个主机自动将任何新更改拉到 master 分支,而无需登录并自己发出 pull 命令,同时我仍然需要能够在极少数情况下从这些主机推送更改。

据我所见,我认为我应该研究一些 Hooks,但很难理解它们的工作原理。看起来服务器端 post-receive 可能是我正在寻找的,但不确定。

有没有人有任何让它工作的经验?

Git 挂钩将允许您在发出 git pull 命令后做额外的事情,但不能定期 运行 一个 git pull。我建议使用 git 本身之外的东西来进行这种常规拉动。执行此操作的 cron 条目看起来像这样:

* * * * * cd /my/directory/path && git pull >> /var/log/gitcron.log 2>&1  # Pull gitrepo every minute, logging output to /var/log/gitcron.log

请记住,如果您有像这样的常规拉动设置,则在目标分支中重写历史记录的变基或其他东西将导致带有 cron 的机器在没有人工干预的情况下处于损坏状态。

我遇到了同样的问题,并使用简单的 http.server 例程创建了一个 python 脚本。 这里是存储库(只有 built-in 个库): https://github.com/TinKurbatoff/github-webhook-autopull

在这里您可以设置一个 webhook: https://github.com/<github_user_name>/<your_repo>/settings/hooks

每次更新此存储库时,它都会调用您的网络服务器。

即使您将回购副本保存在本地 — 您也可以在 home/work 计算机的某个端口上设置此侦听器,并通过 IP 调用您的计算机(您可能需要在家中设置端口转发路由器)。