Organisations-Repositorys
Versuchen Sie den folgenden Shell-Einzeiler, um alle Repos aus Ihrer Organisation zu klonen:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Benutzer-Repositorys
Klonen aller mit Git-Repository-URLs:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Klonen aller mit Klon-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
Hier ist die nützliche Shell-Funktion, die den Startdateien des Benutzers hinzugefügt werden kann (mit 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
}
Private Repositories
Wenn Sie die privaten Repos klonen müssen, können Sie ein Autorisierungstoken wie folgt in Ihren Header einfügen:
-H 'Authorization: token <token>'
oder übergeben Sie es in param ( ?access_token=TOKEN
), zum Beispiel:
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
Anmerkungen:
- Fügen Sie
type=private
Ihrer Abfragezeichenfolge hinzu, um nur private Repositorys abzurufen .
- Eine andere Möglichkeit ist die Verwendung
hub
nach der Konfiguration Ihres API-Schlüssels.
Siehe auch:
Hinweise :
- Um die Geschwindigkeit zu erhöhen, stellen Sie die Anzahl der parallelen Prozesse ein, indem Sie den -P
Parameter für xargs
( -P4
= 4 Prozesse) angeben.
- Wenn Sie die GitHub-Grenzwerte erhöhen müssen, versuchen Sie, sich durch Angabe Ihres API-Schlüssels zu authentifizieren.
- Hinzufügen --recursive
, um in die registrierten Submodule zurückzukehren, und Aktualisieren aller darin verschachtelten Submodule.