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 CLI获取最新版本_Git_Bash_Github_Command Line Interface - Fatal编程技术网

如何使用git CLI获取最新版本

如何使用git CLI获取最新版本,git,bash,github,command-line-interface,Git,Bash,Github,Command Line Interface,我想使用gitHub的“发布”功能告诉我的生产服务器何时应该从gitHub更新其代码库。 我不想让它抓住每一个推,但只是当一个新的版本正在创建 我的计划是创建一个bash脚本,该脚本将每10-15分钟检查一次是否有新版本,如果发现新版本,它将执行pull请求或下载最新版本的zip文件,部署新代码并重新启动节点服务 但我还停留在第一步,这就是我如何知道是否有一个新的版本 非常感谢您提供的任何帮助/指导。正如我在“”中提到的,您有一个专门用于获取最新版本的API GET /repos/:owner/

我想使用gitHub的“发布”功能告诉我的生产服务器何时应该从gitHub更新其代码库。
我不想让它抓住每一个推,但只是当一个新的版本正在创建

我的计划是创建一个bash脚本,该脚本将每10-15分钟检查一次是否有新版本,如果发现新版本,它将执行pull请求或下载最新版本的zip文件,部署新代码并重新启动节点服务

但我还停留在第一步,这就是我如何知道是否有一个新的版本

非常感谢您提供的任何帮助/指导。

正如我在“”中提到的,您有一个专门用于获取最新版本的API

GET /repos/:owner/:repo/releases/latest
您可以将其(与和)用于私人回购


如果缓存最新版本,则可以在每次新的最新版本与缓存的版本不同时触发进程。

使用bash并借助curl,您可以使用此长的一行程序从公共存储库获取最新版本:

git clone -b $(basename $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/OWNER/PROJECT/releases/latest)) https://github.com/OWNER/PROJECT.git
bash函数如下所示:

gh-clone-latest() {
  local owner=$1 project=$2
  local output_directory=${3:-$owner-$project-release}
  local release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$owner/$project/releases/latest)
  local release_tag=$(basename $release_url)
  git clone -b $release_tag -- https://github.com/$owner/$project.git $output_directory
}
将其减少为
gh克隆最新所有者项目


对于一个私有项目,您需要正确地进行身份验证和作用域,如另一个答案中所述。

我忘记提到的一件重要事情是,它是一个私有GitHub。