Подтвердить что ты не робот

Как загрузить один необработанный файл из частного 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 
4b9b3361

Ответ 1

Предыдущие ответы не работают (или больше не работают).

Вы можете использовать API V3 для получения необработанного файла (вам нужен токен OAuth):

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

Все это должно идти по одной строке. Опция -O сохраняет файл в текущем каталоге. Вы можете использовать -o filename, чтобы указать другое имя файла.

Чтобы получить токен OAuth, следуйте инструкциям здесь: https://help.github.com/articles/creating-an-access-token-for-command-line-use

Я написал это как сущность: https://gist.github.com/madrobby/9476733

EDIT: ссылки API для решения следующие:

Ответ 2

Кроме того, вы можете использовать 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
....

Ответ 3

Я знаю, что это старый вопрос, но ни одно из предложенных выше решений не помогло мне. Возможно, с тех пор API изменился.

Это сработало:

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

Ответ 4

Или, если у вас нет токена:

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

Ответ 5

Я боролся с этим в течение нескольких минут, пока не понял, что все, что нужно, - это обернуть URL в кавычки, чтобы избежать амперсанда.

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

Это работало для меня в моем частном репо.

Ответ 6

Я столкнулся с ошибкой аутентификации, когда URL был перенаправлен на Amazon S3:

Разрешен только один механизм авторизации; только параметр запроса X-Amz-Algorithm...

Для меня изменился переход от заголовка Authorization: token X к параметру запроса ?access_token=<token>.

Ответ 7

Нам приходилось довольно часто скачивать файлы из частных репозиториев GitHub, а скрипты хакерской оболочки не совсем сокращали его, поэтому мы создали fetch, который представляет собой кросс-платформенный инструмент с открытым исходным кодом, который упрощает загрузку исходных файлов и выпуск активов из тега git, фиксации или ветки публичных и частных репозиториев GitHub.

Например, чтобы загрузить файл baz из версии 0.1.3 частного репозитория GitHub в /tmp, вы должны сделать следующее:

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

Ответ 8

Ниже следует работать нормально. "Сырой" перед именем вашей ветки (мастер в этом случае).

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

Ответ 9

Просто дополнение к принятому ответу. Если вы используете 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]

Ответ 10

  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

Ответ 11

Вы можете сделать это с помощью необработанной ссылки.

curl -O https://raw.githubusercontent.com/owner/repo/branchname/path/to/file