GitHubリポジトリから単一ファイルをダウンロードする方法
Githubは大規模なコードプロジェクトをホストするためによく使われますが、ファイルホスティングとしてもかなり優れています。そして時には、リポジトリ全体をクローンせずにファイルを数個ダウンロードしたいこともあります。Githubは、ウェブサイトからもコマンドラインからもこれをサポートしています。
GitHubウェブサイトから単一ファイルをダウンロードする
ウェブブラウザを使用するのが問題ないのであれば、単一のファイルを簡単にダウンロードできます。ダウンロードしたいファイルに移動し、「Raw」をクリックしてください。
これにより、ファイルへの直接リンクがあるページが開きます。ここからコピー/ペーストできますが、ほとんどのブラウザでは右クリックして「名前を付けて保存」を選択することで、ファイルを直接ダウンロードできるはずです。
コードファイルの場合、保存しようとするかもしれません。
.txtダウンロードする前または後に手動で修正する必要があります。
コマンドラインからのダウンロード
ファイルが提供されているため
raw.githubusercontent.com、直接ダウンロードすることができます。
wgetまたは
curlそれらはアクセス可能な場所に保存されているので、ユーザー名、リポジトリ、およびファイルパスを知っていれば、次のようにして任意のブランチの任意のファイルをダウンロードできます:
wget https://raw.githubusercontent.com/username/repository/branch/path/filename.mdGitのAPIを使用したい場合は、より直接的に対話し、正確なファイルの場所がわからないときにファイルをダウンロードできます。APIを使用するには、個人用アクセストークンを作成する必要があります。このスクリプト内の「ACCESS_TOKEN」をこのトークンで置き換えることができます。
curl -H 'Authorization: token ACCESS_TOKEN ' -H
'Accept: application/vnd.github.v3.raw' -O -L
https://api.github.com/repos/username/repository/contents/path/filename.md
この/repos/{user}/{repo}/contentsエンドポイントは、パスがディレクトリを指しているかファイルを指しているかによって異なる動作をします。もしファイルであれば、そのファイルに関するメタデータを返します:
{
"type": "file",
"encoding": "base64",
"size": 5362,
"name": "README.md",
"path": "README.md",
"content": "encoded content ...",
"sha": "3d21ec53a331a6f037a91c368710b99387d012c1",
"url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md",
"git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1",
"html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md",
"download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md",
"_links": {
"git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1",
"self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md",
"html": "https://github.com/octokit/octokit.rb/blob/master/README.md"
}
}
ディレクトリの場合、すべてのファイルとサブディレクトリを配列で返します:
[
{
"type": "file",
"size": 625,
"name": "octokit.rb",
"path": "lib/octokit.rb",
"sha": "fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b",
"url": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb",
"git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b",
"html_url": "https://github.com/octokit/octokit.rb/blob/master/lib/octokit.rb",
"download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/lib/octokit.rb",
"_links": {
"self": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb",
"git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b",
"html": "https://github.com/octokit/octokit.rb/blob/master/lib/octokit.rb"
}
},
{
"type": "dir",
"size": 0,
"name": "octokit",
"path": "lib/octokit",
"sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d",
"url": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit",
"git_url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d",
"html_url": "https://github.com/octokit/octokit.rb/tree/master/lib/octokit",
"download_url": null,
"_links": {
"self": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit",
"git": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d",
"html": "https://github.com/octokit/octokit.rb/tree/master/lib/octokit"
}
}
]
その後、jqのようなJSONパーサーを使用してURLを抽出し、それをダウンロードすることができます。リポジトリのファイルリストを再帰的に取得するには、ルートツリーを取得する必要があります。


