GitHubから単一のファイルをダウンロードする


625

開発者のほとんどがVCSを使用していると思いますが、Gitを使用している方もいらっしゃると思います。リポジトリ内の単一ファイルのダウンロードURLを取得するためのヒントやコツはありますか?

生のファイルを表示するためのURLは必要ありません。バイナリの場合、それは無駄です。

http://support.github.com/discussions/feature-requests/41-download-single-file

GitHubを「ダウンロードサーバー」として使用することもできますか?

Google Codeに切り替えることにした場合、ここに記載されている機能はありますか?

または、オープンソースプロジェクト用の無料のホスティングとVCSはありますか?


3
GitHubのリリース機能がこの役割を果たします。
pkamb 2017年

@RadekSimko DownGitあなたを助けるかもしれません。この答えを見てください。
Minhas Kamal 2017

1
GitLabについては、stackoverflow.com /a/51993087/6309を参照してください。
VonC、

これは誰にとっても機能しませんが、python pandasを使用している場合は、次のようなことを簡単に実行できます(大きなファイルでも機能します)。 「raw.githubusercontent.com/t-davidson/...」)
グラハム・ヘスケス

試してみてくださいgithubのためGitzipをクロームのための
subtleseeker

回答:


580

Gitはリポジトリの一部のダウンロードをサポートしていません。すべてダウンロードする必要があります。しかし、GitHubでこれを行うことができるはずです。

ファイルを表示すると、「未加工」バージョンへのリンクがあります。URLはそのように構築されています

https://raw.githubusercontent.com/user/repository/branch/filename

URLの空白を埋めることで、WgetまたはcURL-Lオプション付き、以下を参照)、または単一のファイルをダウンロードするために何でも使用できます。繰り返しますが、これを実行しても、Gitで使用されるバージョン管理機能は利用できません。

更新:これはバイナリファイルでは機能しないとおっしゃっていました。おそらくGitリポジトリでバイナリファイルを使用すべきではありませんが、GitHubには、ファイルのアップロードに使用できる各リポジトリのダウンロードセクションがあります。複数のバイナリが必要な場合は、.zipファイルを使用できます。アップロードされたファイルをダウンロードするためのURLは次のとおりです。

https://github.com/downloads/user/repository/filename

上のリンクから上記のURL github.comにリダイレクトされることに注意してくださいraw.githubusercontent.comRFC 2616に従って、このHTTP 302リダイレクトで指定されたURLを直接使用しないでください。


16
後世への注意:私はそれをテストしたところ、バイナリファイルではrawを使用して問題なく動作しました。
emmby

1
〜10 MBのzipファイルでエラーが発生しました:エラー:blobが大きすぎます
ina

32
提案されたURL形式は私には機能しません。https://raw.github.com/user/repository/branch/filenameが機能することがわかりました。
ブライアンC.

5
@BrianC .:(少なくとも2013年8月27日現在)回答で(rawリポジトリ名の後に)言及されたURL形式は、言及された形式(ホスト名raw.github.com)に自動的にリダイレクトされるようになりました。疑わしい場合は、github.comで問題のファイルを参照し、[Raw]ボタンをクリックします。
mklement0

10
それでもcurlを使用する場合は、コマンドラインで-Lオプションを使用してリダイレクトに従います。curl
Lynx-Lab

560
  1. ダウンロードするファイルに移動します。
  2. クリックすると、GitHub UI内のコンテンツが表示されます。
  3. 右上には、右クリックRawボタンを。
  4. 名前を付けて保存...

22
「名前を付けて保存」の代わりに、URLをコピーします。これはファイルのURLです。これで、ダウンロードするURLを使用するすべてのツールでそれをダウンロードすることができます:wgetの、ブラウザ、など
jgomo3

1
@MattParkins試したところ、大きなファイル(「この大きなファイルは現在表示できません」という警告が表示されているバイナリファイルでも)で機能するようになりました
lmsurprenant

3
この冗長な手順を実行するのをやめ、このChrome拡張機能を使用してください。chrome.google.com/webstore/detail/github-mate/...
カム・ソング

3
私の神は、簡潔でわかりやすく、カットアンドドライで、読みやすく、理解しやすい回答であり、意味のあるだけでなく、外部のサードパーティのBSを必要とせずに機能します。すべてのStackOverflowの回答だけがこのように簡単だった場合。ありがとうございました。
パダワン

2
これは単一のC#ファイルで機能しました。おそらくgithubにダウンロード用の別のボタンを追加する必要があります。ボタンを右クリックすることはあまり直感的ではありません。
Nick

39

V3 APIを使用して、次のような生ファイルを取得できます(OAuthトークンが必要です)。

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path

これはすべて1行で行う必要があります。この-Oオプションは、ファイルを現在のディレクトリに保存します。を使用-o filenameして別のファイル名を指定できます。

OAuthトークンを取得するには、こちらの手順に従ってください:https : //help.github.com/articles/creating-an-access-token-for-command-line-use

これも要点として書きました:https : //gist.github.com/madrobby/9476733


4
これは良いですが、残念ながら最大1 MiBのサイズのファイルしかサポートしません。
ルンドバーグあたり、2014

1
これをプログラム内で実行する場合は、User-Agentが設定されていることを確認してください。
Zugwalt 2014年

1
パスの例をいくつか教えてください。リポジトリがmy-repoで、取得するファイルがx / y / z.txtにある場合、URLは次のようになります。ありがとう。
グレー

これは正常に機能しますが、欠点があります。常に最新バージョンのファイルであるとは限りません。ファイルを変更してみてください。あまり待たずに、このメソッドを使用してファイルを取得してください。代わりに、以前のバージョンのみを取得します。
pacomix 2017

34

この要旨によるとに、wgetまたはcURLを使用できます。

  1. GitHubリポジトリのファイル名をクリックします。
  2. Rawをクリックしてファイルの内容を表示します。
  3. ブラウザでURLをコピーします。
  4. コマンドラインで、次のいずれかを実行します。

    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/

    もう1つ:RHEL7.6では、次のコマンドを実行します。

    • wget https://URL-from-step3/ --output-document=FILE_NAME

wgetgithubリポジトリでファイルを表示し、[Raw]ボタンをクリックした後、目的のCソースファイルへの生パスを続けて使用しました。Raspberry Pi 3でRaspbianを使ってチャンピオンのように働いた
Richard Chambers

ゲームには少し遅れますが、これは完全にうまくいきました。私の場合、生のコンテンツを表示し、右クリックしてダウンロードすることはできませんでした。これは、コンピューターで提供されていない特定の形式のファイルが必要なためです。この回答のコマンドは、すべてをそのままダウンロードします。
Seankala

16

GitHub Mateを使用すると、単一のファイルを簡単にダウンロードできます。アイコンをクリックするだけでダウンロードできます。現在、Chromeでのみ機能します。

GitHub Mateダウンロード


1
@jcollumたった今チェックされ、私のために働く。最新バージョンを使用していることを確認できますか?またはエラーを知らせてください。あなたがそれを機能させるのを助けてうれしいです。
カム・ソング

2
私はChromeの最新バージョン34.0.1847.116を使用していますが、これは確かに機能しません。どのオペレーティングシステムを使用していますか?OS X MavericksのIM。
Jahkobi Digital

私はWindows 7のChrome 34とOS X Mavericksでテストしましたが、どちらも動作します。動作しない場合はかなり奇妙なことですか?フォルダはダウンロードできませんのでご注意ください。たぶん、別のマシンで試すことができます。
カム・ソング

わかりました。このメソッドは、Chrome拡張機能がある場合にのみ機能します。chrome.google.com/webstore/detail/github-mate/…– 2015
11:36にヒューマライズ

このビューから、右クリックしてファイルとして保存します
Thierry Dalon

16

curlこのように使用できます:

curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file

Ocurlがコンテンツ
Lをダウンロードすることは、curlがリダイレクトに従うことを意味します


15

これは、GitHubですべてのファイルに対して可能になりました。raw.github.comのファイルを翻訳する必要があります。たとえば、ファイルが次のリポジトリにある場合:

https://github.com/<username>/<repo>/some_directory/file.rb

wgetを使用すると、次の場所から生ファイルを取得できます。

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb

Rails Composerはその良い例です。


2
一部のファイルはraw.githubusercontent.comでホストされています
jcollum '20

1
そして、時にはraw2.github.comがfyi
jeremy.bass

11

Enhanced Githubと呼ばれるChrome拡張機能があります

各ファイルの右側にダウンロードボタンが直接追加されます。

ここに画像の説明を入力してください


これは、「すべての閲覧履歴の読み取り」権限を要求しないため、Github Mateより優れています。ダウンロードボタンを右クリックして[リンクを別名で保存]を忘れないでください。
Gh0sT 2019

GitHubのアカウントからトークンを追加する必要があります。
BartusZak

これは使用しても安全ですか?
アリアンサプトラ

1
@Ariansaputra私はこれを長い間使用していますが、問題に遭遇したことはありません。安全なはずです。理由がわからない
アブラハムムルチャーノベンツァドン

@AbrahamMurcianoBenzadon感謝
アリアンサプトラ

10

thomasfuchsが言ったことをフォローアップするために、代わりにGitHub Enterpriseユーザーのためにここにあなたが使用できるものがあります。

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path

こちらもAPIドキュメントですhttps://developer.github.com/v3/repos/contents


1
パスの例をいくつか教えてください。リポジトリがmy-repoで、取得するファイルがx / y / z.txtにある場合、URLは次のようになります。ありがとう
グレイ

1
@グレイhttps://your_domain/api/v3/repos/{owner}/my-repo/contents/x/y/z.txt
グレゴリー・スヴァリアン

ブランチからファイルをダウンロードしたい場合 どうすればできますか?
Carlos Andres、


9

github使用してzipファイルをダウンロードしたい場合wget

wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true

詳細については、このWebサイトを参照してください


.zipだけでなく、任意のファイルをダウンロードできます。
enriquetaso 2016年

6

私がMACを使用したことがないので、この方法はWindowsで機能します。そのため、以下で説明するキーのMACの代替キーは何なのかわかりません。

CSVファイルについて話しましょう。CSVファイルをダウンロードする場合:

  1. ダウンロードする特定のデータセットに移動してクリックします。
  2. データセットの右上に「Raw」ボタンが表示されます。
  3. 「Alt」を押してから、「Raw」ボタンを左クリックします。
  4. CSV全体がシステムにダウンロードされます。

覚えておいてください、あなたはAltと左クリックを同時に押す必要があります。「Raw」ボタンをクリックするだけで、ブラウザにCSVが開きます。

お役に立てば幸いです。


5

あなただけでそれを行う必要がありraw、あなたのファイルのURL。

たとえば、AFNetworkingのREADMEをダウンロードするには:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md 

これはパブリックリポジトリであるため、資格情報は必要ありません。URLの種類に注意してください。raw.githubusercontent.com/path/to/file


4

2019年のまとめ

これを処理するには、ファイルのサイズ、ファイルに加えてフォルダをダウンロードする必要があるかどうか、および手動で行うかプログラムで行うかによって、さまざまな方法があります。

以下に要約する6つのオプションがあります。そして、より実践的な説明を好む人のために、YouTubeビデオをまとめました:GitHubから個別のファイルとフォルダーをダウンロードしますます

また、(ファイルではなく)GitHubから単一のフォルダー/ディレクトリをダウンロードする必要があるユーザーのために、StackOverflowに同様の回答を投稿しました。


1. GitHubユーザーインターフェイス

  • ほとんどの画像にダウンロードボタンがあります。
  • リポジトリのホームページにダウンロードボタンがあります。もちろん、これによりリポジトリ全体がダウンロードされます。その後、ダウンロードを解凍し、必要な特定のファイルを手動でドラッグする必要があります。

2.ブラウザのコンテキストメニュー

  • GitHubのファイルに移動し、「Raw」ボタンを右クリックして、ブラウザーのコンテキストメニューを開きます。そこから、Google Chromeを使用している場合は、[名前を付けてリンク先を保存]を選択します。他のブラウザにも同様のUIがありますが、選択の説明は異なる場合があります。たとえば、Safariでは「リンクファイルのダウンロード」および「リンクファイルの別名ダウンロード」としてリストされます。

3.サードパーティツール

  • これを処理できるさまざまなブラウザー拡張機能とWebアプリがあり、DownGitもその1つです。GitHub URLをファイルに貼り付け、[ダウンロード]ボタンをクリックするだけです。リンクは、直接のファイルリンクではなく、GitHub.comがホストするリポジトリビューである必要があります。ファイルリンクの例:https://github.com/babel/babel-eslint/blob/master/lib/parse.js

4. Subversion

  • GitHubはgit-archive(特定のファイルをダウンロードできるgit機能)をサポートしていません。ただし、GitHubはさまざまなSubversion機能をサポートしており、そのうちの1つをこの目的に使用できます。Subversionはバージョン管理システム(gitの代替)です。Subversionをインストールする必要があります。ダウンロードするファイルのGitHub URLを取得します。ただし、このURLを変更する必要があります。リポジトリへのリンクの後に「トランク」という単語が続き、ネストされたファイルへのパスが必要です。つまり、上で述べたのと同じファイルリンクを使用して、「blob / master」を「trunk」に置き換えます。最後に、ターミナルを開いて、コンテンツをダウンロードするディレクトリに移動し、次のコマンドを入力します(URLを作成したURLに置き換えます)。svn export https://github.com/babel/babel-eslint/trunk/lib/parse.js

5. cURL

  • cURLをインストールする必要があります。GitHub.com上のファイルに移動し、「Raw」ボタンを左クリックして直接ファイルリンクに移動し、このURLをコピーしてターミナルを開き、コンテンツをダウンロードするディレクトリに移動して、次のコマンドでは、ファイル名を任意の名前に置き換え、URLをコピーしたばかりのURLに置き換えますcurl -o parse.js https://raw.githubusercontent.com/babel/babel-eslint/master/lib/parse.js

6. GitHub API

  • これは実際にはDownGitが内部で使用しているものです。GitHubのREST APIを使用し、コンテンツエンドポイントにGETリクエストを送信します。エンドポイントは次のように構成できますhttps://api.github.com/repos/:owner/:repo/contents/:path。プレースホルダーを置き換えた後のエンドポイントの例は次のとおりhttps://api.github.com/repos/babel/babel-eslint/contents/lib/parse.jsです。これにより、ダウンロードURL(上記のcURLの例で使用したのと同じダウンロードURL)を含む、そのファイルのJSONデータが得られます。ただし、この方法は単一のファイルにはそれほど便利ではありません(上記のリンクで説明したように、特定のフォルダーをダウンロードするためにこの方法を使用する可能性が高くなります)。

ダウンロードボタンはリポジトリ全体をダウンロードしないという私の理解は...私は間違っているかもしれません。次に例を示します。github.com / googleapis / google-api-php-clientリポジトリをダウンロードしても、examplesディレクトリは取得されません。そのためにはブランチを変更する必要があります。
アルベルト

1
@albert良いキャッチ。彼らは特に、特定のフォルダを除外しているから、実際の/ .gitattributesファイル内のファイル:github.com/googleapis/google-api-php-client/blob/master/...
jabacchetta

共有していただきありがとうございます。TIL ...
アルバート

4

GitHubリリース機能

リポジトリ内の特定のファイルをダウンロードするためにリンクするのではなく、GitHubのリリース機能を使用して、ダウンロード可能なデータ(コンパイル済みバイナリなど)を、そのデータの生成に使用されるタグ付きバージョンのソースコードに関連付ける必要があります。

https://github.com/blog/1547-release-your-software

エンドユーザーにソフトウェアを配布するためのワークフローであるリリースを発表できることをうれしく思います。リリースは、変更ログとバイナリアセットを備えたファーストクラスのオブジェクトであり、Gitアーティファクトを超えた完全なプロジェクト履歴を示します。

リリースには、リリースノートと、ソフトウェアまたはソースコードをダウンロードするためのリンクが付いています。

多くのGitプロジェクトの規則に従って、リリースはGitタグに関連付けられています。既存のタグを使用することも、公開時にタグでリリースを作成することもできます。

ここに画像の説明を入力してください


1
はい!これは、ブラウザから直接実行できる最も簡単なソリューションです。1.リポジトリのメインページから、releases2。を選択します。コミット番号をクリックします。3. 目的のファイルを見つけ、3つのドット...View fileクリックしView rawて選択します。4。をクリックしてファイルをダウンロードします!!!
ジョナサンベン

3

これは間違いなく機能します。少なくともChromeでは。「未加工」アイコンを右クリック-> リンクに名前を付けて保存


1
これにより、ファイルの周りのgithubラッパーを含むgithubページのHTMLファイルが保存されます。
グレゴールトーマス

@Gregor-参考までに、少なくともTEXTのページでは、そうすべきではありません。不明な場合は、「Raw」アイコンを左クリックします。これにより、HTMLなしでブラウザでテキストファイルが開きます。ページの任意の場所をrt-クリックして、「名前を付けて保存...」を実行します。(またはSelect-All / Copyを実行してから、必要な場所に貼り付けます)
ToolmakerSteve

3

Githubリポジトリからファイルをダウンロードするには、rawファイルへのリンクを指定して 'curl'コマンドを使用します。

curl https://raw.githubusercontent.com/user/repo/filename --output filename

--outputオプションの後に新しいファイル名を追加して、未加工のファイルを新しく作成したファイルにダウンロードします。


2
  1. リンクしたページが最初の質問に回答します。

  2. GitHubには、リリースなどのダウンロード機能もあります。

  3. Google CodeにGitがまったくありません。

  4. GitHub、Google Code、SourceForgeは、ほんの始めに無料ホスティングです。SourceForgeはまだそうするかもしれません CVSを


2

最近、というサービスを見つけました gitzipとそのオープンソースを:

地点 - -http://kinolien.github.io/gitzip/

リポジトリ-https ://github.com/KinoLien/gitzip

上記のサイトにアクセスし、リポジトリまたはディレクトリのURLを入力すると、個々のファイルまたはディレクトリ全体をzipファイルとしてダウンロードできます。


しかしjszip.min.js、そのリポジトリからのみダウンロードするにはどうすればよいですか?トロールフェイス
Levi Fuller

githubでファイルを開き、rawに移動します。ファイルのソースコードが表示され、ブラウザを使用してマウスを右クリックしてダウンロードし、名前を付けて保存できます。わたしにはできる。
ボリス

2

これで、このgoogle chrome拡張を使用して、リポジトリ内の任意のファイルまたは特定のフォルダをダウンロードできます。

githubのGitZip: リンク:https ://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn

使用法 :

  1. GitHubの公開リポジトリページ。
  2. 必要なアイテムをダブルクリックしてください。
  3. 右下のダウンロードボタンをクリックします。
  4. 進行状況ダッシュボードを表示し、ブラウザートリガーのダウンロードを待ちます。
  5. ZIPファイルを取得します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください



1

curlとfirefoxを使用している場合... すべての認証メカニズム(別名cookie)を含むcurl呼び出しを生成するcligetアドオンを使用できます。

rawボタンcliget-> "copy url for link"を右クリックして、シェルに貼り付けます。ログインする必要がある場合でも、ファイルを取得できます。


0
  1. 右側の[デスクトップでクローン]のすぐ下に、[Zipファイルをダウンロード]と表示されています
  2. Zipファイルをダウンロード
  3. ファイルを抽出します

あなたがlfsファイルの内容を持っているような方法でこれを行う方法はありますか?
フクロウ


0

またはこれを試してください

const https = require('https');
const fs = require('fs');
const DOMAIN = 'raw.githubusercontent.com';

function writeFile(data, fileName) {
  fs.appendFile(fileName, data.toString(), err => {
    if (err) {
      console.log('error in writing file', err);
    }
  });
}

function EOF(data) {
  console.log('EOF');
}

function getFileName(pathToFile) {
  var result = pathToFile.split('/');
  var splitLength = result.length;
  return result[splitLength - 1];
}
function getFile(branchName, username, repoName, ...pathToFile) {
  pathToFile.forEach(item => {
    const path = `/${username}/${repoName}/${branchName}/${item}`;
    const URL = `${DOMAIN}${path}`;
    const options = {
      hostname: DOMAIN,
      path: path
    };
    var fileName = getFileName(item);

    https
      .get(options, function(res) {
        console.log(res.statusCode);
        /* if file not found */
        if (res.statusCode === 404) {
          console.log('FILE NOT FOUND');
        } else {
          /* if file found */
          res.on('data', data => writeFile(data, fileName));
          res.on('end', data => EOF(data));
        }
      })
      .on('error', function(res) {
        console.log('error in reading URL');
      });
  });
}
getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');

0

次の形式を使用しましたが、パスを通知することが重要だと思います。

https://github.com/user/repository/raw/branch/filename

^^^上記は私の心の中で完全ではありません

https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true

raw.github.comまたはblobの代わりにrawと言う人もいますが、2行目は私にとってはうまくいき、他の人を助けることを願っています...


0

github-files-fetcherを試すことができます。これは、GitHubリポジトリから単一のフォルダーまたはファイルをダウンロードするコマンドラインツールです。

実際のシナリオを考えてみましょう。次のWebページにアクセスしていて、asyncサブディレクトリだけをダウンロードしたいとします。

https://github.com/reduxjs/redux/tree/master/examples

画像の投稿をお断りしております。

The github-files-fetcherでは、最初urlにそのページのhttps://github.com/reduxjs/redux/tree/master/examples/asyncをコピーしてから、以下のコマンドをコマンドラインで実行する必要があります

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async


-2

これはちょうど今私のために働いたものです...

  1. 別のタブでrawファイルを開きます。

  2. メモ帳の内容全体を新しいファイルにコピーします。

  3. 最初に持っていた拡張子でファイルを保存します

今すぐダウンロードしたphpファイルでテストしました(回答時)

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