首页 > 解决方案 > Git push 发送并行副本到测试服务器

问题描述

当我启动“git push”命令时,我搜索将文件复制到“测试”主机的方法。

git push   ------- TO REPO --> REPO_SERVER
           \
            \_________ TO DIR --> Host_TEST

Git 版本:2.20.1

标签: linuxgit

解决方案


听起来您正在尝试(重新)发明 CI/CD。如果您使用 GitHub 或 GitLab 作为远程服务器,您可以使用Pipelines(或Actions在 GitHub 中)。在那里,您可以定义(几乎)您想要在推送后发生的任何事情,我假设您Host_TEST可以在线访问。

如果您正在运行自己的 git 服务器,您可以使用钩子
实现“推送部署” 。post-receive钩子是放置在内部.git/hooks并在 git 命令的精确阶段执行的脚本。您可以在.git/hook. 有关更多信息,请参见此处:使用 git 设置推送部署

如果您无权访问自己的 git 服务器,
您可以pre-push在本地机器上使用脚本,但这是个坏主意
这个钩子在您执行之后执行git push,但在git实际推送任何内容之前执行。如果您的脚本失败(即非零返回码),它将不会推送。此外,如果您的脚本设法复制但git未能推送,您最终将测试不在您的存储库中的代码。

如果这一切听起来太复杂
了,您可以创建一个 bash 函数来执行这两项操作并将其添加到您的.bashrc.

这是一个例子:

push_copy() {
   if git push
   then 
      # Copy for command here: scp ...
   else
     echo "Failed..."
   fi
}

推荐阅读