You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何一次性批量下载GitHub项目所有Releases及tags版本

批量下载GitHub仓库所有Tag对应Release的实现方案

使用前先确认本地已安装依赖工具:curl(网络请求)、jq(JSON解析),Linux/macOS可直接通过对应包管理器安装,Windows环境可在WSL/Git Bash中执行下述命令。

方案1:单行命令快速执行

适合Release总数少于100的小型仓库,直接替换命令中仓库所有者、仓库名字段(格式参考torvalds/linux),执行后会自动拉取所有版本的Release资产到当前目录:

# 替换OWNER和REPO变量为目标仓库信息
OWNER="仓库所有者"; REPO="仓库名"; curl -s "https://api.github.com/repos/$OWNER/$REPO/releases?per_page=100" | jq -r '.[] | .tag_name as $tag | .assets[] | "echo 正在下载版本: \($tag) 文件名: \(.name) && curl -L -o \($tag)_\(.name) \(.browser_download_url)"' | bash

方案2:可复用Shell脚本(支持分页、断点续传、重复下载跳过)

适合Release数量多、文件体积大的仓库,不会漏拉分页内容,也不会重复下载已存在的文件:

#!/bin/bash
set -e

# 参数校验
if [ $# -lt 2 ]; then
    echo "用法: $0 <仓库所有者> <仓库名> [保存路径]"
    exit 1
fi

OWNER=$1
REPO=$2
SAVE_DIR=${3:-"./${OWNER}_${REPO}_all_releases"}
mkdir -p "$SAVE_DIR"
cd "$SAVE_DIR"

PAGE=1
while true; do
    echo "正在拉取第 $PAGE 页Release列表..."
    # 私有仓库可在curl参数中加 -H "Authorization: token 你的GitHub个人访问令牌"
    RESP=$(curl -s "https://api.github.com/repos/$OWNER/$REPO/releases?per_page=100&page=$PAGE")
    
    # 当前页无数据时终止循环
    if [ "$(echo "$RESP" | jq 'length')" = "0" ]; then
        break
    fi

    # 遍历当前页所有版本
    echo "$RESP" | jq -c '.[]' | while read -r release; do
        TAG=$(echo "$release" | jq -r '.tag_name')
        echo "=== 开始处理版本: $TAG ==="
        mkdir -p "./$TAG"
        
        # 遍历当前版本下所有上传的资产文件
        echo "$release" | jq -c '.assets[]' | while read -r asset; do
            FILE_NAME=$(echo "$asset" | jq -r '.name')
            DOWNLOAD_URL=$(echo "$asset" | jq -r '.browser_download_url')
            FILE_PATH="./$TAG/$FILE_NAME"

            if [ -f "$FILE_PATH" ]; then
                echo "文件 $FILE_NAME 已存在,跳过下载"
                continue
            fi

            echo "正在下载: $FILE_NAME"
            # -C - 参数支持断点续传
            curl -L -C - -o "$FILE_PATH" "$DOWNLOAD_URL"
        done
    done

    PAGE=$((PAGE+1))
done

echo "全部版本下载完成,文件存储路径: $(pwd)"

脚本使用步骤:

  • 将上述内容保存为download_gh_releases.sh
  • 给脚本添加执行权限:chmod +x download_gh_releases.sh
  • 执行示例(例如下载cli/cli仓库的所有Release,保存到./gh_cli_releases目录):
    ./download_gh_releases.sh cli cli ./gh_cli_releases
    

补充说明

  • 未认证的GitHub API请求每小时有60次访问限制,下载大体积、多版本仓库时建议生成GitHub个人访问令牌,加到curl的请求头中,限额可提升至每小时5000次
  • 如果需要下载Tag对应的源码包而非作者上传的预编译资产,可将脚本中资产下载的逻辑替换为源码包地址,源码包格式为https://github.com/$OWNER/$REPO/archive/refs/tags/$TAG.tar.gz

内容的提问来源于stack exchange,提问作者Md. Masudur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:12:27