组织存储库
要从您的组织中克隆所有存储库,请尝试以下 shell 单行:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
用户存储库
使用 Git 存储库 URL 克隆所有内容:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
使用克隆 URL 克隆所有内容:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git' | xargs -L1 git clone
这是可以添加到用户启动文件中的有用的 shell 函数(使用curl
+ jq
):
# Usage: gh-clone-user (user)
gh-clone-user() {
curl -sL "https://api.github.com/users/$1/repos?per_page=1000" | jq -r '.[]|.clone_url' | xargs -L1 git clone
}
私有存储库
如果您需要克隆私有存储库,您可以在标题中添加授权令牌,例如:
-H 'Authorization: token <token>'
或在参数 ( ) 中传递它?access_token=TOKEN
,例如:
curl -s "https://api.github.com/users/$GHUSER/repos?access_token=$GITHUB_API_TOKEN&per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git' | xargs -L1 git clone
笔记:
- 要仅获取私有存储库,请添加
type=private
到您的查询字符串中。
- 另一种方法是
hub
在配置您的 API 密钥后使用。
也可以看看:
提示: - 要提高速度,请通过为(= 4 个进程)
指定-P
参数来设置并行进程数。xargs
-P4
- 如果您需要提高 GitHub 限制,请尝试通过指定您的 API 密钥进行身份验证。
- 添加--recursive
递归到已注册的子模块,并更新其中的任何嵌套子模块。