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

Posted

技术标签:

【中文标题】如何使用 git CLI 获取最新版本【英文标题】:how can I use git CLI to get the latest release 【发布时间】:2016-04-26 06:44:21 【问题描述】:

我想使用 gitHub“发布”功能告诉我的生产服务器何时应该从 GitHub 更新其代码库。 我不希望它在每次推送时都抓取,而只是在创建新版本时抓取。

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

但我被困在第一步,这就是我如何确定是否有新版本。

任何帮助/指针或方向将不胜感激。

【问题讨论】:

我忘记提及的一件重要事情是它是一个私有 GitHub。 【参考方案1】:

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

GET /repos/:owner/:repo/releases/latest

您可以将它(与appropriate authentication 和right scope 一起使用)用于私人回购。

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

【讨论】:

【参考方案2】:

在 curl 的帮助下使用 bash,您可以使用这个长单行从公共存储库获取最新版本:

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-clone-latest Owner Project

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

【讨论】:

【参考方案3】:

CLI gh release list 命令可以显示发布日期

【讨论】:

以上是关于如何使用 git CLI 获取最新版本的主要内容,如果未能解决你的问题,请参考以下文章

git如何拉取主版本中的最新代码到自己空间的分支

如何获取最新版本的代码?

如何将 Angular CLI 升级到最新版本

如何在 Visual Studio 2015 中从 Git 获取特定版本?

git如何更新到指定版本,然后再更新到最新版本

VisualStudio下如何编译和使用最新版本的OpenCV(修正版)