GitHubからすべてのリポジトリを一度に複製する方法は?


97

私は会社のGitHubアカウントを持っています。自動化の目的で作成される可能性のある新しいものすべてを考慮して、内部のすべてのリポジトリをバックアップします。私はこのようなものを望んでいました:

git clone git@github.com:company/*.git 

または同様のものは機能しますが、ワイルドカードが好きではないようです。

Gitにクローンを作成し、適切な権限があると仮定してすべてをプルする方法はありますか?


2
良い質問。そして、プルを介してそれらを同期しておくのはどうですか?プルに対して有効な答えはありますか?
nealmcb

ノードやルビーに熟達していない人のために、Pythonソリューションが必要です;)または、githubはこれを読んで同情して、このための単純なWebインターフェイスを提供する必要があります...
nealmcb

試してください:github.com/wballard/git-friends
kenorb

回答:


52

そのようにすることは不可能だと思います。あなたの最善の策は、APIを使用して組織のリポジトリのリストを見つけてループすることです。

これを試して:

  • [アカウント設定]-> [アプリケーション]に移動して、APIトークンを作成します
  • に電話をかける: http://${GITHUB_BASE_URL}/api/v3/orgs/${ORG_NAME}/repos?access_token=${ACCESS_TOKEN}
  • 応答はオブジェクトのJSON配列になります。各オブジェクトには、その組織の下のリポジトリの1つに関する情報が含まれます。あなたの場合、あなたは特にそのssh_url物件を探しているでしょう。
  • その後git clone、それらssh_urlのそれぞれ。

少し余分な作業ですが、GitHubが適切な認証を行う必要があります。


APIトークンを作成し、呼び出しから出力を取得していますが、リポジトリまたは 'ssh_url'文字列について知っていることを参照しているものは何も表示されません。私はきちんと電話をしなかったと思う。 curl -i https://github.com/api/v3/orgs/company/repos?access_token=<token>
numb3rs1x 2013年

これはGitHub Enterpriseアカウントですか、それともgithub.comですか?
Thomas Kelley

1
あ、誤解しました。エンタープライズアカウントだと思いました。の代わりにhttps://github.com/api/v3/、試してくださいhttps://api.github.com/
Thomas Kelley

1
特定の会社の設定方法はわかりませんが、「組織」ではなく「ユーザー」の場合は、/users/${COMPANY}/reposではなくパスを使用することをお勧めします/orgs/${COMPANY}/repos
Thomas Kelley

1
GitHubごと:access_tokenクエリパラメータの使用は廃止されているため、代わりにAuthorization HTTPヘッダーを使用してください。このトークンが、制御できないアプリによって使用されている場合、この非推奨の結果として機能しなくなる可能性があることに注意してください。
BogeyMan

114

のWindowsおよびすべてのUNIX / LINUXのシステムでは、使用してGitのバッシュまたは任意の他のターミナルを、交換するYOURUSERNAMEユーザー名と使用することにより:

CNTX={users|orgs}; NAME={username|orgname}; PAGE=1
curl "https://api.github.com/$CNTX/$NAME/repos?page=$PAGE&per_page=100" |
  grep -e 'git_url*' |
  cut -d \" -f 4 |
  xargs -L1 git clone
  • とを設定CNTX=usersしてNAME=yourusername、すべてのリポジトリをダウンロードします。
  • とを設定CNTX=orgsしてNAME=yourorgname、組織のすべてのリポジトリをダウンロードします。

最大ページサイズは100であるため、すべてのリポジトリを取得PAGEするには、ダウンロードする適切なページ番号に設定するために、正しいページ番号を使用してこれを数回呼び出す必要があります。

これは、上記を実行するシェルスクリプトです。https//gist.github.com/erdincay/4f1d2e092c50e78ae1ffa39d13fa404e


4
最も単純な純粋なbashソリューション。ちなみに、このbashコードは、ほとんどすべての* nix環境、Linux、Cygwin、Mingwで実行できます。もちろん、Gitbashは、他の端末と同じようにターミナルエミュレーションです。
m3nda

1
これは組織では機能しないため、質問に直接回答しません。 Kenorbからのこの回答は、組織を処理し、最大1000のレポジトリでも機能します。
RichVel 2018年

1
認証あり:curl " api.github.com/$CNTX/$NAME/… " | grep -e 'git_url *' | カット-d \ "-f 4 | xargs -L1 git clone
Yannick Wurm

2
回答を更新してください(Feb-2019):GitHub API v3によると、カールは/ orgs / ORGNAME / reposに移動する必要があります。また、多分API v3のへのリンクが含ま:developer.github.com/v3 また、あなたはカール-u「ユーザー名」を追加する必要がありますプライベートのレポのために、そしてカールは一度あなたにパスワードを要求されます。それ以外の場合は素晴らしい仕事!:)))
Dmitry Shevkoplyas

1
dimitry hevkoplyasコメントstackoverflow.com/questions/19576742/…からの更新。カールしようとすると、developer.github.com / v3が301ステータスを返します。このbashコマンドを使用するcurl -u "{username}" " api.github.com/orgs {org} / repos?page = 1&per_page = 100" | grep -o 'git @ [^ "] *' | xargs -L1 git clone 100%
Tommy

43

組織リポジトリ

組織からすべてのリポジトリを複製するには、次のシェルワンライナーを試してください。

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

ユーザーのスタートアップファイルに追加できる便利なシェル関数を次に示します(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>'

または、それをparam(?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キーを設定した後に使用することです。

以下も参照してください。


ヒント
-速度を上げるには-Pxargs-P4= 4プロセス)のパラメータを指定して、並列プロセスの数を設定します。
-GitHubの制限を引き上げる必要がある場合は、APIキーを指定して認証してみてください。
-追加--recursiveして登録済みサブモジュールに再帰し、その中のネストされたサブモジュールを更新します。


2
per_page = 1000は100で
最大

20

この要点は、コマンドラインの1行でタスクを実行します。

curl -s https://api.github.com/orgs/[your_org]/repos?per_page=200 | ruby -rubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[git clone #{repo["ssh_url"]} ]}'

[your_org]組織の名前に置き換えます。per_page必要に応じて設定してください。

更新:

ATutorMeが述べたように、GitHub docsによると、最大ページサイズは100 です。

100を超えるリポジトリがある場合はpage、URLにパラメータを追加する必要があり、ページごとにコマンドを実行できます。

curl -s "https://api.github.com/orgs/[your_org]/repos?page=2&per_page=100" | ruby -rubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[git clone #{repo["ssh_url"]} ]}'

注:デフォルトのper_pageパラメーターは30です。


あなたがアクセスできるプライベートレポジトリに対してこれがどのように行われるかについての考えはありますか?
MichaelGofron

2つ目は機能せず、アンパサンドがバックグラウンドタスクに移動します
slashdottir '20

&access_token = <my_access_token>をURLに追加したところ、完全に機能しました
rmartinus

2つ目:page = 1(!)
Yannick Wurm

5

[アカウント設定]-> [アプリケーション]に移動し、APIキーを作成します。
次に、以下のスクリプトにAPIキー、githubインスタンスのURL、組織名を挿入します

#!/bin/bash

# Substitute variables here
ORG_NAME="<ORG NAME>"
ACCESS_TOKEN="<API KEY>"
GITHUB_INSTANCE="<GITHUB INSTANCE>

URL="https://${GITHUB_INSTANCE}/api/v3/orgs/${ORG_NAME}/repos?access_token=${ACCESS_TOKEN}"

curl ${URL} | ruby -rjson -e 'JSON.load(STDIN.read).each {|repo| %x[git clone #{repo["ssh_url"]} ]}'

それをファイルに保存し、chmod u+x実行します。

ルビコードを提供してくれたArnaudに感謝します。


5

だから、私も私の答えを追加します。:)(私はそれが簡単だと思いました)

リストを取得する(私は「magento」会社を使用しました):

curl -si https://api.github.com/users/magento/repos | grep ssh_url | cut -d '"' -f4

使用clone_url代わりにssh_urlHTTPアクセスを使用します。

だから、それらすべてを複製しましょう!:)

curl -si https://api.github.com/users/magento/repos | \
    grep ssh_url | cut -d '"' -f4 | xargs -i git clone {}

プライベートリポジトリを取得する場合-GETパラメータを追加するだけ ?access_token=YOURTOKEN


1
はい、ルビーは必要ありません。ただgreppingします...
Xiao-Feng Li

4

提供された要旨 @seancdavisでコメントが非常に役立つことがわかりました。特に、元のポスターのように、すばやいアクセスのためにすべてのリポジトリを同期したかったが、その大部分は非公開でした。

curl -u [[USERNAME]] -s https://api.github.com/orgs/[[ORGANIZATION]]/repos?per_page=200 |
  ruby -rubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[git clone #{repo["ssh_url"]} ]}'

[[USERNAME]]をgithubユーザー名に、[[ORGANIZATION]]をGithub組織に置き換えます。出力(JSONリポジトリメタデータ)は、単純なルビスクリプトに渡されます。

# bring in the Ruby json library
require "json"

# read from STDIN, parse into ruby Hash and iterate over each repo
JSON.load(STDIN.read).each do |repo|
  # run a system command (re: "%x") of the style "git clone <ssh_url>"
  %x[git clone #{repo["ssh_url"]} ]
end

1
この解決策は私にとって完璧に機能しました。実際に必要なのは、すべての個人アカウントリポジトリを新しいローカルマシンに複製することだけでした。新しいワークステーションのセットアップに非常に便利です。注:これを行うには、に変更.../orgs/[[organization]]/repos...する必要がありました.../users/[[username]]/repos...。これで、すべての作業を別のローカルマシンにすばやくインポートできます。ありがとう!
B.バレット


2

このpythonワンライナーは、必要なことを行います。それ:

  • githubで利用可能なリポジトリを確認します
  • それぞれに対して、システムコールを行います git clone

    python -c "import json, urllib, os; [os.system('git clone ' + r['ssh_url']) for r in json.load(urllib.urlopen('https://api.github.com/orgs/<<ORG_NAME>>/repos?per_page=200'))]"
    

2
curl -s https://api.github.com/orgs/[GITHUBORG_NAME]/repos | grep clone_url | awk -F '":' '{ print $2 }' | sed 's/\"//g' | sed 's/,//' | while read line; do git clone "$line"; done

2
ソリューションに説明を追加してください。そうすれば、同様の問題を持つ他の人々があなたのソリューションをより簡単に理解できるようになります!
Nander Speerstra

詳細はのようなパスページ番号が必要?page=2です。
Bruno Wego

2

シンプルなソリューション:

NUM_REPOS=1000
DW_FOLDER="Github_${NUM_REPOS}_repos"
mkdir ${DW_FOLDER}
cd ${DW_FOLDER}
for REPO in $(curl https://api.github.com/users/${GITHUB_USER}/repos?per_page=${NUM_REPOS} | awk '/ssh_url/{print $2}' | sed 's/^"//g' | sed 's/",$//g') ; do git clone ${REPO} ; done

2

上記のコマンドとツールをいくつか試しましたが、面倒すぎると判断したので、これを行うための別のコマンドラインツールを作成しましたgithub-dl

使用するには(nodejsがインストールされていることが前提)

npx github-dl -d /tmp/test wires

これは、CLIで提供する認証の詳細(ユーザー/パス)を使用して、すべてのリポジトリのリストを取得wiresし、testディレクトリに情報を書き込みます。

詳しくは

  1. 認証を要求(2FAをサポート)
  2. Github APIを介してユーザー/組織のリポジトリのリストを取得します
  3. このためにページ分割を行うため、100を超えるレポがサポートされます

実際にはリポジトリのクローンは作成されませんが、代わりに、クローンを作成.txtするxargsために渡すことができるファイルを書き込みます。次に例を示します。

cd /tmp/test
cat wires-repo-urls.txt | xargs -n2 git clone

# or to pull
cat /tmp/test/wires-repo-urls.txt | xargs -n2 git pull

多分これはあなたにとって便利です。ほんの数行のJSなので、ニーズに合わせて簡単に調整できます


1

これを行うのに非常に便利なnpmモジュールもあります。クローンだけでなくプルもできます(既存のデータを更新するため)。

あなたはこのように設定を作成するだけです:

[{
   "username": "BoyCook",
   "dir": "/Users/boycook/code/boycook",
   "protocol": "ssh"
}]

そしてgitall clone例えば。またはgitall pull


1

誰かがWindowsソリューションを探している場合に備えて、PowerShellの小さな関数を以下に示します(プロキシを使用する場合と使用しない場合の両方で機能する必要がない場合は、oneliner /エイリアスの可能性があります)。

function Unj-GitCloneAllBy($User, $Proxy = $null) {
    (curl -Proxy $Proxy "https://api.github.com/users/$User/repos?page=1&per_page=100").Content 
      | ConvertFrom-Json 
      | %{ $_.clone_url } 
      # workaround git printing to stderr by @wekempf aka William Kempf
      # https://github.com/dahlbyk/posh-git/issues/109#issuecomment-21638678
      | %{ & git clone $_ 2>&1 } 
      | % { $_.ToString() }
}

1

したがって、実際には、FOOに一致する組織からすべてのリポジトリを複製するBAR場合は、jqおよび一般的なcliユーティリティを必要とする以下のワンライナーを使用できます

curl 'https://api.github.com/orgs/FOO/repos?access_token=SECRET' |
  jq '.[] |
  .ssh_url' |
  awk '/BAR/ {print "git clone " $0 " & "}' |
  sh

1

ユーザーからすべてのリポジトリ(パブリックおよびプライベート)を複製するコメント付きの別のシェルスクリプト:

#!/bin/bash

USERNAME=INSERT_USERNAME_HERE
PASSWORD=INSERT_PASSWORD_HERE

# Generate auth header
AUTH=$(echo -n $USERNAME:$PASSWORD | base64)

# Get repository URLs
curl -iH "Authorization: Basic "$AUTH https://api.github.com/user/repos | grep -w clone_url > repos.txt

# Clean URLs (remove " and ,) and print only the second column
cat repos.txt | tr -d \"\, | awk '{print $2}'  > repos_clean.txt

# Insert username:password after protocol:// to generate clone URLs
cat repos_clean.txt |  sed "s/:\/\/git/:\/\/$USERNAME\:$PASSWORD\@git/g" > repos_clone.txt

while read FILE; do
    git clone $FILE
done <repos_clone.txt

rm repos.txt & rm repos_clone.txt

1

にbashエイリアス/機能を作成します ~/.bashrc file

私のチームでエイリアス/ bash関数を作成することでこれを解決しました ~/.bashrc file

ステップ

ターミナルまたはLinuxシェルを開き、~/.bashrc file以下を開きます。

sudo nano ~/.bashrc

この関数を追加します。

CloneAll() {
    # Make the url to the input github organization's repository page.
    ORG_URL="https://api.github.com/orgs/${1}/repos?per_page=200";

    # List of all repositories of that organization (seperated by newline-eol).
    ALL_REPOS=$(curl -s ${ORG_URL} | grep html_url | awk 'NR%2 == 0' \
                | cut -d ':' -f 2-3 | tr -d '",');

    # Clone all the repositories.
    for ORG_REPO in ${ALL_REPOS}; do
        git clone ${ORG_REPO}.git;
    done
}

〜/ .bashrcファイルを保存して閉じ、ターミナルを閉じます。これを行う必要があります。そうしないと、新しい関数が初期化されません。

新しいターミナルを開いて試してください:

CloneAll <your_github_org_name>

:個人のgithubレポURLがhttps://github.com/awesome-asyncと呼ばれる場合、コマンドは次のようになります

CloneAll awesome-async

重要

per_page=200最初の変数の終わりには、ORG_URLそのために特別な注意を払って、クローニングされますレポの数を設定します。

ORG_URL="https://api.github.com/orgs/${1}/repos?per_page=200";  <---- make sure this is what you want

お役に立てれば!:)


最大らしい。per_pageの値は100 ... 2番目のパラメーターとして追加された大きな組織のページ番号の場合、それは私のニーズに完全に対応します...repos?page=${2}&per_page=100";
sv3n

0

を使用してリポジトリのリストを取得curlし、bashループでそのリストを反復処理できます。

GIT_REPOS=`curl -s curl https://${GITHUB_BASE_URL}/api/v3/orgs/${ORG_NAME}/repos?access_token=${ACCESS_TOKEN} | grep ssh_url | awk -F': ' '{print $2}' | sed -e 's/",//g' | sed -e 's/"//g'`
for REPO in $GIT_REPOS; do
  git clone $REPO
done

0

オープンソースツールを使用して、一連のgithubリポジトリを複製できます:https : //github.com/artiomn/git_cloner

例:

git_cloner --type github --owner octocat --login user --password user https://my_bitbucket

からJSON APIを使用しますapi.github.com。githubのドキュメントでコード例を確認できます:https : //developer.github.com/v3/

またはそこに:

https://github.com/artiomn/git_cloner/blob/master/src/git_cloner/github.py


0

アクセスキーを指定し、Python 3とリクエストモジュールをインストールして、プライベートリポジトリのみを複製するには:

ORG=company; ACCESS_KEY=0000000000000000000000000000000000000000; for i in $(python -c "import requests; print(' '.join([x['ssh_url'] for x in list(filter(lambda x: x['private'] ,requests.get('https://api.github.com/orgs/$ORG/repos?per_page=1000&access_token=$ACCESS_KEY').json()))]))"); do git clone $i; done;

0

Linkヘッダーによる徹底的なページネーションを含むPython3ソリューション。

前提条件:


import json
import requests
from requests.auth import HTTPBasicAuth
import links_from_header

respget = lambda url: requests.get(url, auth=HTTPBasicAuth('githubusername', 'githubtoken'))

myorgname = 'abc'
nexturl = f"https://api.github.com/orgs/{myorgname}/repos?per_page=100"

while nexturl:
    print(nexturl)
    resp = respget(nexturl)

    linkheads = resp.headers.get('Link', None)
    if linkheads:
        linkheads_parsed = links_from_header.extract(linkheads)
        nexturl = linkheads_parsed.get('next', None)
    else:
        nexturl = None

    respcon = json.loads(resp.content)
    with open('repolist', 'a') as fh:
        fh.writelines([f'{respconi["full_name"]}\n' for respconi in respcon])

次に、xargsまたは並列および使用することができます:cat repolist | parallel -I% hub clone %


0

このようなリストにリポジトリのリストがある場合、このシェルスクリプトは機能します。

user="https://github.com/user/"

declare -a arr=("repo1", "repo2")

for i in "${arr[@]}"

do

   echo $user"$i"

   git clone $user"$i"

done 

プライベートリポジトリがある場合は、次のようにして "user"を更新できます
。user

0

サンプルのバッチスクリプトを作成しました。すべてのプライベート/パブリックリポジトリは、github.comからダウンロードできます。リポジトリがダウンロードされると、自動的にzipファイルに変換されます。

@echo off
setlocal EnableDelayedExpansion
SET "username=olyanren"
SET "password=G....."
set "mypath=%cd%\"
SET "url=https://%username%:%password%@github.com/%username%/"
FOR /F "tokens=* delims=" %%i in (files.txt) do (
SET repo=%%i
rmdir /s /q !repo!
git clone "!url!!repo!.git"
cd !repo!
echo !mypath!
git archive --format=zip -o "!mypath!!repo!.zip" HEAD
cd ..
)

注:files.txtファイルには、次のようなリポジトリ名のみを含める必要があります。

repository1
repository2

0

5月19日から更新

このbashコマンドを組織に使用します(プライベートリポジトリが含まれます)

curl -u "{username}" "https://api.github.com/orgs/{org}/repos?page=1&per_page=100" | grep -o 'git@[^"]*' | xargs -L1 git clone

0

ここでの一般的な回答は、Github APIがで指定したものにかかわらず、最大100のリポジトリのみを返すことを考慮に入れていませんper_page。100を超えるリポジトリを持つGithub組織を複製する場合は、API応答のページングリンクをたどる必要があります。

私はそれを行うためのCLIツールを書きました:

clone-github-org -o myorg

これにより、myorg組織内のすべてのリポジトリが現在の作業ディレクトリに複製されます。


0

プライベートリポジトリでアクセスできる組織の場合:

curl -u <YOUR_GITHUB_USERNAME> -s https://api.github.com/orgs/<ORG_NAME>/repos?per_page=200 | ruby -rubygems -e ’require “json”; JSON.load(STDIN.read).each { |repo| %x[git clone #{repo[“html_url”]} ]}'

を使用しているhtml_urlためaccess_token、プロンプトが表示されたときにgithubパスワードを入力するだけで済みます。


APIへのパスワードを使用した基本認証は廃止され、まもなく機能しなくなります。推奨される回避策と削除日に関する詳細については、[deprecating-password-auth](developer.github.com/changes/…)にアクセスしてください。
BogeyMan

@BogeyMan更新ありがとうございます!
フラビオ

0

フォークではないすべてのリポジトリをクローンします。

curl -u "username" https://api.github.com/user/repos\?page\=1\&per_page\=100 |
  jq -r 'map(select(.fork == false)) | .[] | .ssh_url' |
  xargs -L1 git clone

要旨のクローンを作成します。

curl https://api.github.com/users/username/gists\?page\=1\&per_page\=100 |
   jq -r ".[] | .git_pull_url +\" '\" + (.files|keys|join(\"__\") + \"'\")" |
   xargs -L1 git clone

jqgistsのレポの名前はハッシュであるため、このコマンドは複雑です。このコマンドは、すべてのファイル名を連結してレポの名前にします。


あなたは任意にJSONをフィルタリングすることができます jq

インストール: sudo apt-get install jq

上記の例では、これを使用してフォークを除外しました:curl ... | jq -r 'map(select(.fork == false))' ...- カジュアルなプルリクエストを行ったリポジトリを複製しない場合に便利です

jqは、いくつかの非常に高度な機能をサポートしています。man jqあなたの友だちです


で認証してcurl -u "username" ... 、プライベートリポジトリにアクセスできます


GuthubのAPI URL

  • あなたのリポジトリ(認証が必要): https://api.github.com/user/repos\?page\=1\&per_page\=100
  • すべてのユーザー: https://api.github.com/users/other_username/repos\?page\=1\&per_page\=100
  • 組織: https://api.github.com/orgs/orgname/repos\?page\=1\&per_page\=100

リポジトリ用のGithub APIドキュメント


0
"""
Clone all public Github Repos

https://developer.github.com/v3/repos/#list-repositories-for-a-user
"""

import urllib.request, base64
import json
import os


def get_urls(username):
    url = f"https://api.github.com/users/{username}/repos?per_page=200"
    request = urllib.request.Request(url)
    result = urllib.request.urlopen(request)
    return json.load(result)


if __name__ == "__main__":
    for r in get_urls("MartinThoma"):
        if not os.path.isdir(r["name"]):
            print(f"Clone {r['name']}...")
            os.system("git clone " + r["ssh_url"])
        else:
            print(f"SKIP {r['name']}...")

0

独自のプライベートおよびパブリックのリポジトリをすべて複製するには、リポジトリのアクセス権を持つ新しいアクセストークンを生成し、これを使用します。

(独自のアクセストークンとユーザー名に置き換えます)

for line in $(curl https://api.github.com/user/repos?access_token=ACCESS_TOKEN_HERE  | grep -o "git@github.com:YOUR_USER_NAME/[^ ,\"]\+");do git clone $line;done

これにより、現在のフォルダー内のすべてのリポジトリが複製されます

これは小さなbashプログラムです。ターミナルに貼り付けてEnterキーを押すだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.