ที่เก็บขององค์กร
หากต้องการโคลน repos ทั้งหมดจากองค์กรของคุณให้ลองใช้เชลล์หนึ่งซับต่อไปนี้:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
ที่เก็บผู้ใช้
การโคลนทั้งหมดโดยใช้ URL ที่เก็บ Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
การโคลนทั้งหมดโดยใช้ 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
นี่คือฟังก์ชันเชลล์ที่มีประโยชน์ซึ่งสามารถเพิ่มลงในไฟล์เริ่มต้นของผู้ใช้ (โดยใช้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
}
ที่เก็บส่วนตัว
หากคุณต้องการโคลน repos ส่วนตัวคุณสามารถเพิ่มAuthorization tokenในส่วนหัวของคุณเช่น:
-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 ของคุณ
ดูสิ่งนี้ด้วย:
คำแนะนำ :
- หากต้องการเพิ่มความเร็วให้กำหนดจำนวนของกระบวนการแบบขนานโดยระบุ-P
พารามิเตอร์สำหรับxargs
( -P4
= 4 กระบวนการ)
- หากคุณต้องการเพิ่มขีด จำกัด GitHub ให้ลองตรวจสอบสิทธิ์โดยระบุคีย์ API ของคุณ
- เพิ่ม--recursive
เพื่อเรียกคืนในโมดูลย่อยที่ลงทะเบียนและอัปเดตโมดูลย่อยที่ซ้อนกันภายใน