首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当GitHub上的主分支更新时,刷新ubuntu服务器上的存储库。我该怎么做呢?

当GitHub上的主分支更新时,刷新ubuntu服务器上的存储库。我该怎么做呢?
EN

Stack Overflow用户
提问于 2019-06-06 01:25:12
回答 2查看 180关注 0票数 2

所以我在一台ubuntu服务器上运行一个docker容器。我已经启用了绑定挂载,所以当服务器上的文件发生变化时,它也会在运行的容器中发生变化,这很酷!

我已经将存储库从GitHub克隆到了我的ubuntu服务器上。

但是现在我想要一个更好的开发工作流程。

每次我将另一个分支与我的主分支合并,或者直接编辑主分支时,我都会将代码推送到GitHub。

然后,我通过SSH连接到我的ubuntu服务器并转到存储库,然后通过简单的"git pull“在GitHub上收集我的主分支的更新版本。服务器上的所有内容都会更新。

但我想要的是,服务器上的存储库监听GitHub上的存储库(主)上的更改。当GitHub上的主分支发生更改时,我希望服务器更新(或者更准确地说,从GitHub中拉出主分支)。

怎样才能实现这样的结构呢?如果侦听部分不可能,我是否应该推送到两个git存储库(GitHub和服务器)?既然服务器上的存储库是克隆的,这有可能吗?如果是这样,我应该怎么做呢?

我很感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-07 05:42:07

为了实现这一点,我使用了Jenkins。Jenkins是一个具有很多功能的大型工具,其中一个功能可以让Jenkins在主服务器(或任何其他分支)发生更改时监听GitHub发出的Webhooks。然后它会自动拉动。

这个工作流程太棒了!

票数 0
EN

Stack Overflow用户

发布于 2019-06-06 06:48:01

GitHub提供了webhooks,当某些事件发生时,这些webhooks可用于获取对给定端点的HTTP POST请求。你可以在GitHub webhook documentation上阅读更多关于这方面的内容。然后,您可以创建一个作业,该作业在收到通知时执行以下操作:

代码语言:javascript
复制
git fetch origin
git reset --hard origin/master # works better than pull if you force-push
git submodule update --init    # only if you have submodules

然而,这确实需要你有一个监听webhook请求并检查事情的服务。如果您不想这样做,您可以简单地推送到远程服务器。您需要在服务器端将receive.denyCurrentBranch设置为updateInstead,这将确保即使分支已经签出,也可以进行签出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56465299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档