Загрузите одиночные файлы из GitHub

Я думаю, что большинство из вас, разработчиков, используют VCS, и я надеюсь, что некоторые из вас используют Git. У вас есть какой-либо совет или трюк, как получить URL-адрес загрузки для одного файла в репозитории?

Мне не нужен URL для отображения необработанного файла; в случае двоичных файлов это ни для чего.

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

Можно ли использовать GitHub как "сервер загрузки"?

Если мы решили переключиться на Google Code, это упомянутая функциональность представлена ​​здесь?

Или есть бесплатный хостинг и VCS для проектов с открытым исходным кодом?

Ответ 1

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.com. Вам не следует напрямую использовать URL-адрес, указанный в этом перенаправлении HTTP 302, поскольку в RFC 2616: "Поскольку перенаправление может иногда изменяться, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов".

Ответ 2

  • Перейдите в файл, который хотите загрузить.
  • Щелкните по нему, чтобы просмотреть содержимое в интерфейсе GitHub.
  • В правом верхнем углу щелкните правой кнопкой мыши кнопку Raw.
  • Сохранить как...

Ответ 3

Вы можете использовать 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

Ответ 4

Согласно этой сущности, вы можете использовать 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/

    Еще один: в RHEL7.6 выполните следующее:

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

Ответ 5

Перейдите к DownGit - введите свой URL-адрес - Загрузить!

Специально подходит для БОЛЬШИХ ФАЙЛОВ


Download with DownGit


Вы можете загружать отдельные файлы и каталоги в виде zip. Вы также можете создать ссылку для загрузки и даже указать имя в zip файле. Подробное использование - здесь.

Ответ 6

GitHub Mate упрощает загрузку одного файла, просто щелкните значок для загрузки, в настоящее время он работает только в Chrome.

GitHub Mate Download

Ответ 7

Теперь это возможно в 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 - отличный пример.

Ответ 8

Чтобы следить за тем, что сказал 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

Ответ 9

Вы можете использовать curl таким образом:

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

O означает, что завиток загружает контент
L означает, что завиток следует за перенаправлением

Ответ 10

Если вы хотите загрузить zip файл из github с помощью wget

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

см. этот сайт для получения более подробной информации

Ответ 11

Вы должны просто сделать это с raw URL вашего файла.

Например, чтобы загрузить README из AFNetworking:

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

Поскольку это публичное репо, вам не нужны никакие учетные данные. Обратите внимание на тип URL: raw.githubusercontent.com/path/to/file

Ответ 12

Этот метод работает для Windows, поскольку я никогда не использовал MAC, поэтому я не знаю, какие альтернативные ключи в MAC для ключей, о которых я расскажу ниже.

Расскажите о файлах CSV. Если вы хотите загрузить файл CSV:

  • Перейдите к этому конкретному набору данных, который вы хотите загрузить, и нажмите на него.
  • Вы увидите кнопку "Raw" в верхней правой части набора данных.
  • Нажмите "Alt", а затем щелкните левой кнопкой мыши по кнопке "Raw" .
  • Весь CSV будет загружен в вашей системе.

Помните, вы должны нажать Alt и щелкнуть левой кнопкой мыши одновременно. Просто нажав кнопку "Raw" , вы откроете CSV в браузере.

Я надеюсь, что это поможет.

Ответ 13

Существует расширение Chrome под названием Enhanced Github

Он добавит кнопку загрузки прямо справа от каждого файла.

enter image description here

Ответ 14

Это определенно сработает. По крайней мере, в Chrome. Щелкните правой кнопкой мыши значок "Raw" → Сохранить ссылку как.

Ответ 15

Вместо того, чтобы ссылаться на загрузку определенного файла в репо, вы должны использовать функцию GitHub Releases для связывания загружаемых данных (например, скомпилированных двоичных файлов) с помеченной версией исходного кода, используемой для создания этого данные.

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

Мы рады объявить релизы, рабочий процесс для доставки программного обеспечения конечным пользователям. Релизы являются первоклассными объектами с изменениями и бинарными активами, которые представляют полную историю проекта за артефактами Git.

Релизы сопровождаются примечаниями к выпуску и ссылками для загрузки программного обеспечения или исходного кода.

Следуя соглашениям многих проектов Git, релизы привязаны к тэгам Git. Вы можете использовать существующий тег или позволить выпускам создавать тег при его публикации.

введите описание изображения здесь

Ответ 16

  • Страница, на которую вы ссылались, отвечает на первый вопрос.

  • В GitHub также есть средство для загрузки таких вещей, как релизы.

  • Код Google не имеет Git вообще.

  • GitHub, Google Code и SourceForge, для начала - бесплатный хостинг. SourceForge все еще может CVS.

Ответ 17

Недавно я нашел службу под названием gitzip и ее также с открытым исходным кодом:

сайт - http://kinolien.github.io/gitzip/

repo - https://github.com/KinoLien/gitzip

Находясь на вышеуказанном сайте, введите URL-адрес репозитория или каталога, вы можете загрузить отдельные файлы или весь каталог в виде zip файла.

Ответ 18

Чтобы загрузить файл из репозитория Github, используйте команду 'curl' со ссылкой на исходный файл.

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

Добавьте параметр --output, а затем новое имя файла, чтобы загрузить необработанный файл во вновь созданный файл.

Ответ 19

Я думаю, что новая структура url raw.giturl:

git файл

raw

Ответ 20

Если вы используете curl и firefox... вы можете использовать cliget дополнение, которое генерирует завиток, включая все механизмы аутентификации (например, cookie).

Итак, щелкните правой кнопкой мыши по кнопке raw cliget → "copy url для ссылки", а затем вставьте ее в оболочку. Вы получите свой файл, даже если вам нужно войти в него, чтобы увидеть его.

Ответ 21

Теперь можно загрузить любой файл или любую конкретную папку в репозитории, используя это расширение Chrome:

GitZip для github: ссылка: https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn

Использование:

  • На любой странице публичных репозиториев GitHub.
  • Просто дважды щелкните нужные элементы.
  • Нажмите кнопку загрузки внизу справа.
  • См. панель мониторинга прогресса и дождитесь загрузки триггера браузера.
  • Получить файл ZIP.

введите описание изображения здесь

введите описание изображения здесь

Ответ 22

  • С правой стороны чуть ниже "Clone in Desktop" он говорит "Скачать Zip файл"
  • Загрузить Zip файл
  • Извлеките файл

Ответ 23

Для пользователей с GitHub Enterprise вам необходимо создать URL-адрес в следующей схеме

Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}

Подробности можно найти здесь

http://artisticcheese.blogspot.com/2017/04/how-to-download-individual-files-from.html

Ответ 24

Или попробуйте это

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');

Ответ 25

Я использовал следующий формат, и мне очень важно сообщить о пути.

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

^^^ выше не очень полно в моем сознании

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

некоторые сказали raw.github.com или raw вместо blob, но вторая строка работает для меня, и я надеюсь, что это поможет другим...

2 ¢

Ответ 26

Вы можете попробовать github-files-fetcher, это инструмент командной строки, который загружает одну папку или файл из репозитория GitHub.

Подумайте о реальном сценарии: вы посетили следующую страницу веб-страницы и захотите загрузить только подкаталог async.

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

жаль, что не разрешено размещать изображения.

С помощью github-files-fetcher вы должны сначала скопировать url этой страницы, https://github.com/reduxjs/redux/tree/master/examples/async, а затем запустить github-files-fetcher команду в командной строке:

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

Ответ 27

Это то, что сработало для меня сейчас...

  • Откройте исходный файл на отдельной вкладке.

  • Скопируйте все это в свой блокнот в новый файл.

  • Сохраните файл в расширении, изначально имевшем

... работал только для файла .php я DL.