Kho tổ chức
Để sao chép tất cả các đại diện từ tổ chức của bạn, hãy thử trình bao một lớp lót sau:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Kho người dùng
Sao chép tất cả bằng cách sử dụng URL của kho lưu trữ Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Sao chép tất cả bằng cách sử dụng URL nhân bản:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git' | xargs -L1 git clone
Đây là hàm shell hữu ích có thể được thêm vào các tệp khởi động của người dùng (sử dụng 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
}
Kho lưu trữ riêng
Nếu bạn cần sao chép các repo riêng tư, bạn có thể thêm Mã thông báo ủy quyền vào tiêu đề của mình như:
-H 'Authorization: token <token>'
hoặc chuyển nó vào param ( ?access_token=TOKEN
), ví dụ:
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
Ghi chú:
- Để chỉ tìm nạp các kho lưu trữ riêng tư, hãy thêm
type=private
vào chuỗi truy vấn của bạn.
- Một cách khác là sử dụng
hub
sau khi định cấu hình khóa API của bạn.
Xem thêm:
Gợi ý :
- Để tăng tốc độ, hãy đặt số quá trình song song bằng cách chỉ định -P
tham số cho xargs
( -P4
= 4 quá trình).
- Nếu bạn cần tăng giới hạn GitHub, hãy thử xác thực bằng cách chỉ định khóa API của bạn.
- Thêm --recursive
để đệ quy vào các mô-đun con đã đăng ký và cập nhật bất kỳ mô-đun con lồng nhau nào bên trong.