📌  相关文章
📜  如何克隆从 github 拉取所有存储库 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:38:09.551000             🧑  作者: Mango

如何克隆从 github 拉取所有存储库 - Shell-Bash

在 GitHub 上的存储库可能是非常多的,在某些情况下,你可能需要克隆所有的存储库。这个问题可以通过使用 Shell 和 Bash 命令来解决。在这篇文章中,我们将介绍如何使用 Shell 和 Bash 命令来克隆所有来自 GitHub 的存储库。

确认你有 SSH 密钥

在你开始之前,你需要确认你在本地拥有 SSH 密钥,这将确保你能够将所有存储库克隆到你的本地系统。你可以在你的 GitHub 资料设置中的 SSH 和 GPG 密钥页面中找到你的 SSH 密钥。

创建一个新的目录

我们首先需要创建一个新的目录来存放所有的存储库。使用下面的命令创建并进入该目录:

mkdir my-github-repos && cd my-github-repos
获取 GitHub API 访问令牌

要使用 Shell 脚本自动克隆 GitHub 存储库,我们需要使用 GitHub API 访问令牌。做法如下:

1.登录到您的 GitHub 帐户并转到 GitHub Settings

2.选择 "Developer Settings" 选项卡

3.选择 "Personal access tokens" 选项卡

4.点击 "Generate new token" 新建一个令牌

5.在新页面中选择访问令牌权限,然后点击 Generate Token 按钮

成功后,将生成一个新的令牌。请务必在此页面安全地保存令牌,因为您只能查看它一次。

下载所有 GitHub 存储库

现在,我们将创建一个 Bash 脚本,它将使用 GitHub API 和 SSH 密钥来自动克隆所有的 GitHub 存储库到我们之前创建的目录中。

打开一个新的终端窗口,并使用以下命令创建一个名为 clone_all_repos.sh 的新文件并将以下代码复制到其中:

#!/bin/bash

TOKEN=YOUR_GITHUB_ACCESS_TOKEN
USER=YOUR_GITHUB_USERNAME

PAGE=1
PER_PAGE=100

URL="https://api.github.com/users/${USER}/repos?per_page=${PER_PAGE}&page=${PAGE}"
GIT_CLONE_PREFIX="git@github.com:${USER}/"

while true; do
    REPOS=$(curl -sSL -H "Authorization: token ${TOKEN}" "${URL}" | jq --raw-output '.[].name')

    if [ -z "${REPOS}" ]; then
        break
    fi

    for REPO in $REPOS; do
        echo "Cloning ${REPO}"
        if [ ! -d "${REPO}" ]; then
            git clone "${GIT_CLONE_PREFIX}${REPO}.git"
        fi
    done

    PAGE=$((PAGE+1))
    URL="https://api.github.com/users/${USER}/repos?per_page=${PER_PAGE}&page=${PAGE}"
done

将脚本文件中的 YOUR_GITHUB_ACCESS_TOKENYOUR_GITHUB_USERNAME 替换为你自己的 GitHub 访问令牌和用户名,分别对应第 5 步和第 9 步中的内容。

保存并关闭文件后,使用以下命令为脚本文件提供执行权限:

chmod u+x clone_all_repos.sh

最后,使用以下命令运行脚本文件:

./clone_all_repos.sh

这将自动克隆你在 GitHub 上所有的存储库到指定目录下。

结论

这是如何使用 Shell 和 Bash 命令来克隆所有 GitHub 存储库的简要介绍。希望这篇文章能够帮助你。