如何一次性下载GitHub指定仓库的全部发布版本(含源码)?
批量下载GitHub仓库所有发布版本(含源码)
方法一:GitHub CLI + Shell 脚本(推荐,无需额外依赖)
适合Linux/macOS/WSL环境,前提是已安装并登录GitHub CLI(执行gh auth login完成登录)。
将以下代码保存为脚本(比如download-all-releases.sh),替换REPO变量为目标仓库的所有者/仓库名(例如vuejs/core),然后运行:
REPO="owner/repo-name" mkdir -p "$REPO-releases" cd "$REPO-releases" # 遍历所有发布版本的Tag,逐个下载资产和源码 gh release list --repo "$REPO" --json tagName --jq '.[].tagName' | while read -r TAG; do echo "处理发布版本: $TAG" # 创建当前版本的目录 mkdir -p "$TAG" # 下载该版本的所有资产文件(二进制包、文档等) gh release download "$TAG" --repo "$REPO" --dir "$TAG" # 下载源码包(zip格式,如需tar.gz可替换为--archive tar.gz) gh release download "$TAG" --repo "$REPO" --dir "$TAG" --archive zip done
方法二:curl + GitHub API(无CLI依赖)
适合无法安装GitHub CLI的环境,需要提前生成GitHub个人访问令牌(需repo权限,在GitHub账号设置的「Developer settings」中创建)。
需要安装jq工具(用于解析JSON),然后运行以下脚本:
REPO="owner/repo-name" TOKEN="your-personal-access-token" mkdir -p "$REPO-releases" cd "$REPO-releases" # 获取所有发布的资产链接、ZIP源码链接、TAR源码链接,批量下载 curl -s -H "Authorization: token $TOKEN" "https://api.github.com/repos/$REPO/releases" | jq -r '.[] | .tagName as $tag | (.assets[] | .browser_download_url) + " " + $tag, .zipball_url + " " + $tag, .tarball_url + " " + $tag' | while read -r URL TAG; do mkdir -p "$TAG" echo "下载中: $(basename "$URL")" curl -L -o "$TAG/$(basename "$URL")" "$URL" done
注意事项
- 若仓库发布数量较多,使用API方式可能触发GitHub速率限制,添加令牌可提升限额;CLI方式会自动处理速率限制
- 若不需要源码包的两种格式(zip/tar.gz),可删除脚本中对应的行
- 下载的文件会按发布Tag分类存放在对应目录中,便于管理
内容的提问来源于stack exchange,提问作者upyen
相关产品推荐
相关产品推荐

