GitHubでのダウンロードについてまとめています。
目次
GitHubからgit cloneでソースをダウンロードする方法
GitHubに公開されているソースコードをダウンロードする方法は、ローカル環境でgit cloneを実行することです。
最新のソースコードがまとめて複製されるほか、タグやコミット情報などのgit情報付きで「リポジトリ」としてローカル環境に複製を作ることができます。
リポジトリのページにて、Codeをクリックし、Codeボタンにて、「HTTPS」を選び、クリップボードマークをクリックします。これで、git cloneで使用する文字列がクリップボードにコピーされます。
関連)google-research/bert: TensorFlow code and pre-trained models for BERT
ローカルの開発環境にて、git cloneの後に、先ほどコピーした文字列をペーストします。ダウンロードにはしばらく時間がかかります。
$ git clone https://github.com/google-research/bert.git Cloning into 'bert'... remote: Enumerating objects: 340, done. remote: Total 340 (delta 0), reused 0 (delta 0), pack-reused 340 Receiving objects: 100% (340/340), 328.28 KiB | 43.00 KiB/s, done. Resolving deltas: 100% (182/182), done.
複製したソースコードを確認してみましょう。git cloneを実行したディレクトリ以下に、リポジトリ名「bert」が作成されています。bert以下には、ソースコードやライセンス表記、READMEなどが複製されています。
$ ls bert $ cd bert $ ls CONTRIBUTING.md LICENSE README.md __init__.py create_pretraining_data.py extract_features.py modeling.py modeling_test.py multilingual.md optimization.py optimization_test.py predicting_movie_reviews_with_bert_on_tf_hub.ipynb requirements.txt run_classifier.py run_classifier_with_tfhub.py run_pretraining.py run_squad.py sample_text.txt tokenization.py tokenization_test.py
このディレクトリはリポジトリ(.gitディレクトリがありgit情報が保管されている)なので、gitコマンドが実行可能です。
GitHubからzipファイルでダウンロードする方法
GitHubからzip形式でファイルをダウンロードすることも可能です。
リポジトリのページにて、Codeをクリックし、Codeボタンの「Download ZIP」を右クリックして「リンクアドレスをコピー」します。Windowsなら単にクリックしてダウンロードしても良いでしょう。
ターミナルにwget(ウェブからファイルをダウンロードするコマンド)に続けて、リンクアドレスを貼り付けます。
$ wget https://github.com/google-research/bert/archive/refs/heads/master.zip --2021-06-23 19:53:18-- https://github.com/google-research/bert/archive/refs/heads/master.zip github.com (github.com) をDNSに問いあわせています... 52.69.186.44 github.com (github.com)|52.69.186.44|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: https://codeload.github.com/google-research/bert/zip/refs/heads/master [続く] --2021-06-23 19:53:18-- https://codeload.github.com/google-research/bert/zip/refs/heads/master codeload.github.com (codeload.github.com) をDNSに問いあわせています... 52.68.31.213 codeload.github.com (codeload.github.com)|52.68.31.213|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 特定できません [application/zip] `master.zip' に保存中 master.zip [ <=> ] 106.44K --.-KB/s 時間 0.08s 2021-06-23 19:53:19 (1.32 MB/s) - `master.zip' へ保存終了 [108997]
しばらく時間がかかり、master.zipというファイルがダウンロードされました。unzipコマンドで解凍すると、ソースファイルが現れました。
$ unzip master.zip Archive: master.zip eedf5716ce1268e56f0a50264a88cafad334ac61 creating: bert-master/ inflating: bert-master/.gitignore inflating: bert-master/CONTRIBUTING.md inflating: bert-master/LICENSE inflating: bert-master/README.md inflating: bert-master/__init__.py inflating: bert-master/create_pretraining_data.py inflating: bert-master/extract_features.py inflating: bert-master/modeling.py inflating: bert-master/modeling_test.py inflating: bert-master/multilingual.md inflating: bert-master/optimization.py inflating: bert-master/optimization_test.py inflating: bert-master/predicting_movie_reviews_with_bert_on_tf_hub.ipynb inflating: bert-master/requirements.txt inflating: bert-master/run_classifier.py inflating: bert-master/run_classifier_with_tfhub.py inflating: bert-master/run_pretraining.py inflating: bert-master/run_squad.py inflating: bert-master/sample_text.txt inflating: bert-master/tokenization.py inflating: bert-master/tokenization_test.py
解凍するとbert-masterとういファイル以下にソースコードが展開されます。
$ ls bert-master master.zip $ ls CONTRIBUTING.md LICENSE README.md __init__.py create_pretraining_data.py extract_features.py modeling.py modeling_test.py multilingual.md optimization.py optimization_test.py predicting_movie_reviews_with_bert_on_tf_hub.ipynb requirements.txt run_classifier.py run_classifier_with_tfhub.py run_pretraining.py run_squad.py sample_text.txt tokenization.py tokenization_test.py
ただし、先ほどのgit cloneと違ってこのディレクトリは単にソースコードを展開しただけで「リポジトリ」ではありません。gitコマンドを実行しようとすると「not a git repository 」(gitのリポジトリではない)というエラーが出力されます。
$ git tag fatal: not a git repository (or any of the parent directories): .git $ git log fatal: not a git repository (or any of the parent directories): .git
tagを指定して、過去のバージョンのソースコードを複製することも可能です。
【関連記事】
▶GitHubのtagはコミットにタグ付けする機能 タグ指定でのzipやgit cloneが可能
単一のファイルをダウンロードする方法
GitHubには、単一のファイルをダウンロードする機能はありません。しかし、少し工夫して単一ファイルのダウンロードが可能です。
リポジトリから、ダウンロードしたいファイルを開き、「Raw」をクリックします。ブラウザのURL欄にアドレスをコピーします。
端末にて、wgetに続けて、先ほどコピーしたアドレスを貼り付けます。
$ wget https://github.com/google-research/bert/blob/master/README.md --2021-06-23 20:40:09-- https://github.com/google-research/bert/blob/master/README.md github.com (github.com) をDNSに問いあわせています... 52.192.72.89 github.com (github.com)|52.192.72.89|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 特定できません [text/html] `README.md' に保存中 README.md [ <=> ] 225.73K 543KB/s 時間 0.4s 2021-06-23 20:40:10 (543 KB/s) - `README.md' へ保存終了 [231143] $ ls README.md
これで、GitHubのリポジトリの単一ファイルのダウンロードができました。
GitHubのダウンロードのまとめ
- git cloneでGitHubからリポジトリをまるごとダウンロードできる
- リポジトリではなく、zip形式でのダウンロードも可能
- ファイルをraw表示させwgetと組み合わせて単一ファイルのダウンロードが可能