Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git推送或合并后,如何更新多个远程设备?_Git_Automation_Hook_Gitlab - Fatal编程技术网

git推送或合并后,如何更新多个远程设备?

git推送或合并后,如何更新多个远程设备?,git,automation,hook,gitlab,Git,Automation,Hook,Gitlab,这可能是一个git钩子问题,还有一点git工作流,即应该如何做。这就是我们现在正在做的: 开发人员在开发中有他们的本地应用程序repo(prod、dev、test),在代码更改和适当测试之后,他们推送或合并到中心repo,该中心repo是gitlab安装在托管VPS上的 除此之外,我们还有两个远程服务器,它们承载着来自gitlab的git克隆repo应用程序 我们在每个远程服务器上使用git repo,在这些服务器上执行脚本pull.sh,每个分支都有命令行,因此我们使用gitlab centr

这可能是一个git钩子问题,还有一点git工作流,即应该如何做。这就是我们现在正在做的:

  • 开发人员在开发中有他们的本地应用程序repo(prod、dev、test),在代码更改和适当测试之后,他们推送或合并到中心repo,该中心repo是gitlab安装在托管VPS上的

  • 除此之外,我们还有两个远程服务器,它们承载着来自gitlab的git克隆repo应用程序

  • 我们在每个远程服务器上使用git repo,在这些服务器上执行脚本
    pull.sh
    ,每个分支都有命令行,因此我们使用gitlab central repo的更改更新该服务器上的本地repo:

    git checkout prod
    git fetch origin prod
    git reset --hard origin/prod
    git pull
    
  • 这就是问题所在。当开发人员推送或合并对gitlab central repo的更改时,我们如何在每个远程服务器上自动更新repo?现在我们必须在每个远程服务器上使用SSH并手动启动脚本。当然我们可以使用cron,但我对git挂钩更感兴趣

    我们是否必须更改逻辑,以便在触发合并/推送gitlab服务器后接收钩子并推送到远程服务器之后?或者我们可以通过post receive脚本中的SSH命令在远程服务器上远程执行pull.sh