ソース コード アーカイブの概要
GitHub から任意のブランチ、タグ、または特定のコミットのスナップショットをダウンロードできます。 これらのスナップショットは git archive
コマンドによって、2 つの形式 (tarball または zipball) のいずれかで生成されます。 スナップショットにはリポジトリの履歴全体は含まれません。 履歴全体が必要な場合は、リポジトリをクローンできます。 詳しくは、「リポジトリをクローンする」を参照してください。
ソース コード アーカイブのダウンロード
ソース コード アーカイブは、3 つの方法でダウンロードできます。
リポジトリ ビューからソース コード アーカイブをダウンロードする
-
GitHub で、リポジトリのメイン ページに移動します。
-
ファイルの一覧の上にある [コード] をクリックします。
-
[ZIP のダウンロード] をクリックします。
リリースからソース コード アーカイブをダウンロードする
-
GitHub で、リポジトリのメイン ページに移動します。
-
ファイルの一覧の右側にある [リリース] をクリックします。
-
リリースの [Assets] (アセット) セクションまで下にスクロールします。
-
ソース コードをダウンロードするには、 [ソース コード (zip)] または [ソース コード (tar.gz)] をクリックします。
タグからソース コード アーカイブをダウンロードする
-
GitHub で、リポジトリのメイン ページに移動します。
-
ファイルの一覧の右側にある [リリース] をクリックします。
-
ソース コードをダウンロードするには、 [zip] または [tar.gz] をクリックします。
ソース コード アーカイブの URL
ソース コード アーカイブは、リポジトリごとに特定の URL で利用できます。 たとえば、リポジトリ github/codeql
を考えてみます。 ブランチ、タグ、または特定のコミット ID をダウンロードするために、異なる URL があります。
アーカイブの種類 | 例 | URL |
---|---|---|
[Branch](ブランチ) | main | https://github.com/github/codeql/archive/refs/heads/main.tar.gz |
タグ | codeql-cli/v2.12.0 | https://github.com/github/codeql/archive/refs/tags/codeql-cli/v2.12.0.zip |
Commit | aef66c4 | https://github.com/github/codeql/archive/aef66c462abe817e33aad91d97aa782a1e2ad2c7.zip |
注: 上記の URL で .zip
または .tar.gz
のいずれかを使って、zipball または tarball をそれぞれ要求できます。
ソース コード アーカイブの安定性
ソース コード アーカイブは要求に応じて生成され、しばらくの間キャッシュされてから、削除されます。 将来同じアーカイブがもう一度要求された場合は、再生成されます。 ソース コード アーカイブに関して GitHub で何が保証されるかを理解することが重要です。
- コミット ID のアーカイブは、いつ要求されても常に同じファイルの内容を持ちます (コミット ID がまだリポジトリ内にあり、リポジトリ名は変更されていないと仮定します)。
- ブランチとタグは異なるコミット ID に移動する可能性があるため、同じブランチまたはタグでも将来ダウンロードするアーカイブの内容が以前にダウンロードしたアーカイブとは異なる場合があります。 ブランチまたはタグが引き続き同じコミット ID を指しているのであれば、ファイルの内容は同じになります。
- zipball または tarball の生成に使用される圧縮の厳密な設定は、時間の経過と共に変更される可能性があります。 ブランチまたはタグが変更されない場合、抽出された内容は変更されませんが、外側の圧縮されたアーカイブは異なるバイト レイアウトになることがあります。 GitHub では、圧縮の設定を変更する少なくとも 6 か月前に通知します。
- リポジトリの名前は、アーカイブ内のディレクトリ構造の一部です。 そのため、リポジトリ名が変更されると、ルート ディレクトリ名も変更されます。
再現性 (常にアーカイブ内で同じファイルを取得するようにする) のためにソース コード アーカイブの安定性に依存する場合、アーカイブ REST API と :ref
のコミット ID を使用することをお勧めします。 コミット ID を使用すると、アーカイブ内で常に同じファイルの内容を取得することができ、リポジトリでタグの書き換えやブランチ ヘッドの移動が起きても影響を受けなくなります。
セキュリティのため (たとえば、悪意をもって作成されたファイルを解凍しないようにするため) にアーカイブの安定性に依存する場合、ソース ダウンロードを使用する代わりにリリースを使用することをお勧めします。 詳しくは、「リリースについて」を参照してください。
こちらのサードパーティ製 GitHub アクションのような機能を使って、リリース プロセスの一環としてこれらのファイルを作成してプッシュできます。 後でリリース アセット REST API を使って、それらを取得できます。