You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何批量下载指定GitHub用户的全部仓库?求普通用户适用方案

如何下载某个GitHub用户的全部仓库(含自动下载方案)

当然有办法!不管是一次性拉取指定GitHub用户的所有公开仓库,还是自动同步更新,都有适合普通用户的简单方案,不用自己复杂开发,下面分Windows工具和PHP简易脚本两种方式给你说明:

一、Windows工具方案(无需写代码)

  • 用Git Bash一键克隆所有仓库
    1. 先安装Git,安装时记得勾选「Git Bash Here」选项,这样右键就能快速打开终端。
    2. 找一个空文件夹,右键选择「Git Bash Here」,输入下面的命令(把username替换成你要下载的GitHub用户名):
      curl -s https://api.github.com/users/username/repos?per_page=100 | grep -o 'git@github.com:[^"]*' | xargs -L1 git clone
      
      这条命令会自动获取该用户的所有公开仓库地址,然后逐个克隆到当前文件夹里。
  • 自动定期同步更新
    如果你想定期自动更新这些仓库,可以写个简单的批处理脚本:
    新建一个文本文件,把后缀改成.bat,粘贴下面的内容(替换username为目标用户名,你的仓库存放路径改成你本地要保存仓库的文件夹路径):
    @echo off
    cd /d "你的仓库存放路径"
    curl -s https://api.github.com/users/username/repos?per_page=100 | grep -o 'git@github.com:[^"]*' > repos.txt
    for /f "tokens=*" %%i in (repos.txt) do (
        if not exist "%%~ni" (
            git clone %%i
        ) else (
            cd "%%~ni"
            git pull
            cd ..
        )
    )
    del repos.txt
    
    然后打开Windows的「任务计划程序」,设置定期运行这个批处理文件,就能自动同步最新的仓库内容了。

二、PHP简易脚本(适合有基础的普通用户)

这个脚本不需要额外安装任何API库,只用PHP自带的curl功能就能实现,步骤很简单:

  1. 新建一个download_repos.php文件,粘贴下面的代码(把$username换成目标GitHub用户名,$savePath改成你本地要保存仓库的路径):
<?php
$username = "目标GitHub用户名";
$savePath = "./github_repos/"; // 本地保存路径,确保这个文件夹有读写权限

// 创建保存目录,如果不存在的话
if (!is_dir($savePath)) {
    mkdir($savePath, 0777, true);
}

// 获取用户的所有公开仓库信息
$url = "https://api.github.com/users/{$username}/repos?per_page=100";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0"); // 模拟浏览器请求,避免API被限制
$response = curl_exec($ch);
curl_close($ch);

$repos = json_decode($response, true);

// 遍历处理每个仓库:克隆新的,更新已有的
foreach ($repos as $repo) {
    $repoUrl = $repo['clone_url'];
    $repoName = basename($repoUrl, ".git");
    $localPath = $savePath . $repoName;

    echo "正在处理仓库:{$repoName}\n";
    if (!is_dir($localPath)) {
        // 克隆新仓库
        exec("git clone {$repoUrl} {$localPath}");
        echo "✅ 已完成克隆\n";
    } else {
        // 更新已有仓库
        chdir($localPath);
        exec("git pull");
        chdir($savePath);
        echo "✅ 已完成更新\n";
    }
}

echo "\n所有仓库处理完毕!";
?>
  1. 确保你的电脑已经安装了PHP和Git,然后打开命令行,切换到脚本所在的文件夹,运行:
php download_repos.php

脚本就会自动帮你下载或更新该用户的所有公开仓库了。

注意:以上方案仅适用于公开仓库,如果是私有仓库,需要在命令或脚本中添加GitHub的访问令牌(token),不过普通用户处理公开仓库的话,上面的方法完全够用。

内容的提问来源于stack exchange,提问作者T.Todua

火山引擎 最新活动