1. 概要

GitHubを使用すると、次の2つの方法でリポジトリをフェッチできます。

  1. gitcloneを使用する
  2. zipまたはtarファイルとしてダウンロード

git clone が最もよく使用される方法ですが、マシンにGitをインストールする必要があります。 Gitが利用できない場合は、リポジトリをtar形式でダウンロードし、ファイルシステムのコンテンツを解凍できます。

このチュートリアルでは、GitHubリポジトリのtarballをダウンロードしてファイルシステムに解凍するためのLinuxコマンドをいくつか見ていきます。

2. curlコマンドの使用

curl コマンドを使用して、任意のHTTPURLにアクセスできます。 また、GitHubではHTTP経由でリポジトリアーカイブをダウンロードできるため、 curl:を使用してこのtarballをダウンロードできます。

curl -L  https://github.com/Baeldung/kotlin-tutorials/tarball/master -o dummy.tgz

-L フラグを使用して、curlがリダイレクトを追跡できるようにしました。 これが必要なのは、GitHubがすべてのダウンロードリクエストをアーカイブの場所にリダイレクトするためです。 このフラグをスキップすると、リダイレクトヘッダー付きの302HTTPステータスコードが表示されます

上記のコマンドは、.tgzファイルをcurlコマンドが実行されたのと同じ場所にダウンロードします。 後で、tarコマンドを使用してこのファイルを解凍できます。

インラインで開梱することもできます。

curl -L https://github.com/Baeldung/kotlin-tutorials/tarball/master | tar -xz

ほとんどの場合、curlはGitHubとのHTTPS接続をハンドシェイクできます。 ただし、この接続が失敗した場合は、 curl:で安全でないオプションを使用できます。

curl -L -k https://github.com/Baeldung/kotlin-tutorials/tarball/master | tar -xz

3. wgetコマンドの使用

Linuxは、HTTPリクエストを実行するための汎用コマンドである curl コマンドとは別に、専用の非対話型ネットワークダウンローダーであるwgetコマンドも提供しています。

HTTPおよびFTPプロトコルをサポートしているため、GitHubからリポジトリアーカイブをダウンロードするためにも使用できます。

wget https://github.com/Baeldung/kotlin-tutorials/tarball/master -O dummy.tgz

同様に、上記のコマンドは、.tgzファイルをコマンドが実行されたのと同じ場所にダウンロードします。

curl コマンドと同様に、アーカイブファイルをインラインで解凍できます。

wget https://github.com/Baeldung/kotlin-tutorials/tarball/master -O - | tar -xz

コマンド-Oオプションは、アーカイブコンテンツを標準出力にリダイレクトし、tarコマンドへの入力として機能します。

ここでも、 curl コマンドと同様に、HTTPS証明書の検証をスキップできます。 wgetを使用する –no-check-certificate:

wget --no-check-certificate https://github.com/Baeldung/kotlin-tutorials/tarball/master -O - | tar -xz

4. プライベートリポジトリからのダウンロード

これまでに説明したコマンドは、パブリックリポジトリからアーカイブをダウンロードするのに役立ちます。 ただし、プライベートリポジトリの場合は、GitHubアクセストークンを提供する必要があります

curl -L -k -u token:x-oauth-basic https://github.com/Baeldung/kotlin-tutorials/tarball/master | tar -xz

ここで、トークンは英数字のOAuthトークンであり、GitHubアカウントに追加する必要があります。

5. 結論

この記事では、GitHubからリポジトリtarballをダウンロードする2つの方法を学習しました。 curlコマンドとwgetコマンドを使用して、非対話型シェルコマンドを使用してアーカイブをダウンロードしました

さらに、SSL検証とインラインアンパックをスキップするためのさまざまなコマンドオプションも確認しました。 最後に、curlを使用して、OAuthトークンを使用してプライベートリポジトリをダウンロードしました