97

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 
4

18 に答える 18

36

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

TOKEN=...
curl -s https://$TOKEN@raw.githubusercontent.com/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>

例:

$ curl -s https://1bacnotmyrealtoken123beefbea@raw.githubusercontent.com/concourse/concourse/master/README.md
....
于 2016-08-17T22:37:31.837 に答える
16

これは古い質問であることは知っていますが、上記で提案された解決策はどれもうまくいきませんでした。その後、API が変更された可能性があります。

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

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

于 2016-02-27T02:22:09.297 に答える
7

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

curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
于 2013-11-08T00:12:50.480 に答える
7

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

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

それは私のプライベートレポでうまくいきました。

于 2013-08-20T17:19:39.627 に答える
2

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

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

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

于 2014-12-11T06:23:21.943 に答える
2

私見の少し簡単な解決策は、公式の GitHub CLI ghを使用することです。

  1. まず、ログインする必要があります:
gh auth login

私はすでにログインしているので、このコマンドは必要ありません。

  1. 次に、ダウンロードするファイルを対象とする API URL が必要です。そしてgh、それを認証済みのダウンロード URL に変換するために呼び出します。
API_URL=https://api.github.com/repos/owner/repo/contents/path/file.ext
curl $(gh api $API_URL --jq .download_url) -o file.ext

実際の例の方が良いかもしれません。ここでは、 cliからinstall_linux.mdをダウンロードします。gh

API_URL=https://api.github.com/repos/cli/cli/contents/docs/install_linux.md
curl $(gh api $API_URL --jq .download_url) -o install_linux.md

API_URL

  • ユーザーownercli
  • リポジトリ名repocli多すぎます
  • ファイルへのパス ( path/file.ext) はdocs/install_linux.md
于 2020-12-25T23:15:29.667 に答える
1

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

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

GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
于 2016-06-20T16:38:34.077 に答える
0

プライベート リポジトリから 1 つのファイルをダウンロードするだけでも、すべてのリポジトリにアクセスできる個人用アクセス トークンを発行するのは少し危険であり、良い方法ではないと思います。

方法 -

単一ファイルのトークンで url を使用することをお勧めします。心配しないで。トークン文字列は github によって自動的に生成されます。この URL は、ソース コード ページで取得できます。

  1. curl や wget などでダウンロードしたいソース コード ページに移動します。
  2. 「raw」ボタンを見つけてクリックします。 ここに画像の説明を入力
  3. 新しいページが開き、URL をコピーするだけです。この URL は次のようになります:
    ( https://raw.githubusercontent.com/USERNAME/REPONAME/BRANCHNAME/FILENAME?token=TOKENSTRING )。
  4. このURLを使用してファイルをダウンロードできます
于 2020-12-19T07:12:40.047 に答える
0

Pycharm と Colab で GitHub プライベート .iypnb ファイルを開く簡単なトリックを試してみましたが、うまくいきました。

  1. Rawボタンを押して.ipynbファイルの生テキストを取得すると、このようなテキストが開きます。
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": []
}]
}
  1. OS(Windowsなど)でメモ帳/テキストエディタを開き、すべてのテキストを新しいメモ帳ファイルにコピーします。

  2. メモ帳を name.txt ではなく name.ipynb として保存し、テキスト ドキュメント (*.txt) ではなくファイル タイプとしてすべてのファイル ( . ) として保存します。

  3. 最後に、IDE または colab でファイルを開きます。

于 2021-05-30T19:01:50.523 に答える
-5

生のリンクを使用してこれを行うことができます。

curl -O https://raw.githubusercontent.com/owner/repo/branchname/path/to/file
于 2016-05-20T18:32:45.030 に答える