web-dev-qa-db-ja.com

コマンドラインを使用してプライベートgithubリポジトリから単一の未加工ファイルをダウンロードするにはどうすればよいですか?

CIサーバーで、Githubで管理している構成ファイルを取得して、多くのジョブ間で共有できるようにします。私はこのファイルをcurl経由で取得しようとしていますが、これらのアプローチは両方とも失敗します(404を取得します):

# As advised by the oAuth docs
curl -H 'Authorization: token the_token' -L -o setup.sh https://raw.github.com/org/repo/file

# The url of the raw file after clicking to view it
curl -L https://raw.github.com/org/repo/file?login=username&token=the_token 
57
Matt Gibson

前の回答は機能しません(または機能しません)。

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/94767

編集:ソリューションのAPIリファレンスは次のとおりです。

72
thomasfuchs

または、githubの「パーソナルアクセストークン」を使用できます( https://github.com/settings/tokens ):

TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>

例:

$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
16
theartofrain

私はこれが古い質問であることを知っていますが、上で提案された解決策はどれも私にとってはうまくいきませんでした。それ以降、おそらくAPIが変更されました。

これはうまくいきました:

curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]

9
mark amos

または、トークンがない場合:

curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
6
PeqNP

アンパサンドをエスケープするためにURLを引用符で囲むだけで十分だと気付くまで、これに数分間苦労していました。

curl "https://raw.github.com/org/repo/file?login=username&token=the_token"

それは私個人のレポでうまくいきました。

4
Philip Forget

URLがAmazon S3にリダイレクトされたときに、認証エラーが発生しました。

許可される認証メカニズムは1つのみです。 X-Amz-Algorithmクエリパラメータのみ...

Authorization: token Xヘッダーから?access_token=<token>クエリパラメーターに変更すると、うまくいきました。

2
chrismo

プライベートのGitHubリポジトリからファイルをかなり頻繁にダウンロードする必要があり、ハッキングされたシェルスクリプトでは十分にカットされなかったため、 fetch を作成しました。これは、ダウンロードしやすいオープンソースのクロスプラットフォームツールです。 gitタグ、コミット、またはパブリックおよびプライベートGitHubリポジトリのブランチからのソースファイルとリリースアセット。

たとえば、ファイルbazをプライベートGitHubリポジトリのバージョン0.1.3から/tmpにダウンロードするには、次のようにします。

GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
1

Github EnterpriseのURLを使用している場合は、受け入れられた答えに追加するだけです。

curl -H 'Authorization: token [your token]' \
-H 'Accept: application/vnd.github.v3.raw' \
-L https://[your domain]/api/v3/repos/[owner]/[repo-name]/contents/[path of file]
0
lonewarrior556

以下は正常に動作するはずです。ブランチ名の前の「生」(この場合はマスター)。

curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh

0
Subhakar K S
  1. ブラウザでgithubリポジトリを開きます:ファイルをクリックします
  2. ブラウザで開発者ツールを開きます:[ネットワーク]タブを選択します
  3. ブラウザのgithub:[ダウンロード]ボタンをクリックします
  4. ポップアップを閉じる
  5. ブラウザの開発ツールで:file_name?token=ABAHQCAT6KG...を持つリストを右クリックします
  6. コピーを選択->リンクアドレスをコピー

    urlの形式は次のとおりです。

    https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I

  7. ターミナル内:

    wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I

リンクは限られた時間のみ有効であるか、トークンを作成できます: GitHub article

0
Milan Rakos