Гид по технологиям

Как скачать отдельный файл с GitHub

• 5 min read • Разработка • Обновлено 01 Dec 2025
Скачать отдельный файл с GitHub
Скачать отдельный файл с GitHub

Быстрые ссылки

  • Скачивание одного файла через веб-интерфейс GitHub
  • Скачивание из командной строки

Логотип GitHub

Скачивание одного файла через веб-интерфейс GitHub

Если вы предпочитаете браузер, это самый простой способ. Перейдите к нужному файлу в репозитории и нажмите кнопку “Raw” (или «Raw» в интерфейсе). Это откроет прямую ссылку на содержимое файла.

Кнопка Raw на странице файла GitHub

После этого откроется страница с сырым содержимым файла. В большинстве браузеров правый клик → “Сохранить как” позволит загрузить файл напрямую. Можно также скопировать адрес из адресной строки и использовать его в wget или curl.

Диалог сохранения файла в браузере

Советы и наблюдения:

  • Для текстовых файлов браузер может предложить сохранить с расширением .txt. Проверьте и при необходимости переименуйте файл с правильным расширением (например, .md, .py, .json).
  • Если файл бинарный (изображение, скомпилированный артефакт), браузер обычно предложит корректное имя и тип.
  • Для приватных репозиториев веб-метод потребует авторизации в вашем браузере.

Важно: кнопка “Raw” даёт прямую ссылку вида https://raw.githubusercontent.com/… — это загрузочный URL, удобный для wget/curl.

Скачивание из командной строки

Файлы, доступные через raw.githubusercontent.com, можно скачать напрямую через wget или curl. Стандартный URL выглядит так:

wget https://raw.githubusercontent.com/username/repository/branch/path/filename.md

Или аналогично с curl:

curl -o filename.md https://raw.githubusercontent.com/username/repository/branch/path/filename.md

Если вы не уверены в точном пути или хотите использовать API (особенно для приватных репозиториев), GitHub предоставляет REST API, который возвращает содержимое файла или список файлов в каталоге. Для запросов к приватным репозиториям или чтобы избежать ограничений анонимного доступа, создайте персональный токен и используйте его в заголовке Authorization.

Пример использования curl с токеном и запросом содержимого файла (возвращается сырой контент):

curl -H 'Authorization: token ACCESS_TOKEN' -H 'Accept: application/vnd.github.v3.raw' -O -L 'https://api.github.com/repos/username/repository/contents/path/filename.md'

Пояснения:

  • Параметр -H добавляет заголовки, в частности заголовок авторизации с вашим персональным токеном.
  • Заголовок Accept: application/vnd.github.v3.raw просит API вернуть сырое содержимое файла, а не JSON-объект с base64-кодом.
  • Параметр -L показывает curl следовать перенаправлениям (иногдa API делает редирект на raw.githubusercontent.com).

Если вы запрашиваете endpoint /repos/{owner}/{repo}/contents/{path}, API ведёт себя по-разному:

  • Если {path} указывает на файл — возвращается объект с информацией о файле и полем download_url.
  • Если {path} указывает на директорию — возвращается массив объектов (файлы и папки).

Пример ответа API для файла (упрощённый, приведён как валидный JSON):

{
  "type": "file",
  "encoding": "base64",
  "size": 5362,
  "name": "README.md",
  "path": "README.md",
  "content": "encoded content ...",
  "sha": "3d21ec53a331a6f037a91c368710b99387d012c1",
  "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md",
  "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1",
  "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md",
  "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md",
  "_links": {
    "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1",
    "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md",
    "html": "https://github.com/octokit/octokit.rb/blob/master/README.md"
  }
}

Пример ответа для директории — массив объектов (файлов и подпапок):

[
  {
    "type": "file",
    "size": 625,
    "name": "octokit.rb",
    "path": "lib/octokit.rb",
    "sha": "fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b",
    "url": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit.rb",
    "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/lib/octokit.rb",
    "_links": { "self": "...", "git": "...", "html": "..." }
  },
  {
    "type": "dir",
    "size": 0,
    "name": "octokit",
    "path": "lib/octokit",
    "sha": "a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d",
    "url": "https://api.github.com/repos/octokit/octokit.rb/contents/lib/octokit",
    "download_url": null,
    "_links": { "self": "...", "git": "...", "html": "..." }
  }
]

Вы можете использовать парсер JSON, например jq, чтобы вытащить поле download_url и скачать файл автоматически:

curl -s -H 'Authorization: token ACCESS_TOKEN' 'https://api.github.com/repos/username/repository/contents/path' | jq -r '.[] | select(.name=="filename.md") | .download_url' | xargs wget -O filename.md

Если нужно получить список всех файлов рекурсивно, используйте Git data API (root tree) или git-операции для получения tree с параметром recursive=1.

Когда этот подход не сработает

  • Репозиторий приватный и у вас нет прав: нужен токен или приглашение в коллабораторы.
  • Файл слишком большой: raw.githubusercontent.com и API накладывают ограничения на размер отклика; для очень больших файлов используйте git LFS или клонирование/архивы.
  • Бинарные файлы: API с Accept: application/vnd.github.v3.raw обычно корректно отдает бинарные данные, но при ошибках лучше использовать скачивание через html/Release assets или git LFS.
  • Ограничения по rate-limit: анонимные запросы ограничены; при интенсивных запросах используйте авторизацию.

Альтернативные подходы

  • Клонирование репозитория и выборочная копия: git clone –depth 1 для быстрой загрузки всей ветки.
  • Sparse checkout: git sparse-checkout для выборочной загрузки поддиректорий и файлов.
  • GitHub CLI (gh): gh api может скачать содержимое и удобна для автоматизации.
  • Загрузка zip-архива репозитория: https://github.com/owner/repo/archive/refs/heads/branch.zip — распаковать и взять нужный файл.
  • Releases / Assets: для релизов часто выкладывают готовые бинарники/архивы.

Быстрый набор команд (cheat sheet)

  • Скачать файл напрямую через wget:
wget https://raw.githubusercontent.com/username/repository/branch/path/filename.ext
  • Скачать файл через curl:
curl -o filename.ext https://raw.githubusercontent.com/username/repository/branch/path/filename.ext
  • Скачать файл через GitHub API (с токеном):
curl -H 'Authorization: token ACCESS_TOKEN' -H 'Accept: application/vnd.github.v3.raw' -L -O 'https://api.github.com/repos/username/repository/contents/path/filename.ext'
  • Использовать gh (GitHub CLI):
gh auth login
ngh api repos/owner/repo/contents/path --jq '.download_url' | xargs curl -L -o filename.ext

(gh-команды могут отличаться по версии; проверьте локальную документацию gh.)

Ментальная модель и правило выбора

  • Нужно только увидеть содержимое или быстро скачать небольшой файл → веб-интерфейс (Raw).
  • Автоматизация/скрипты → raw.githubusercontent.com + wget/curl или API с токеном.
  • Приватный файл или большое количество запросов → используйте персональный токен или GitHub CLI.
  • Если файл связан с большими бинарниками или история важна → клонируйте репозиторий или используйте git LFS.

Ролевые чек-листы

Разработчик:

  • Убедиться, что файл текстовый и не требует LFS.
  • Скачать через wget/curl или открыть в браузере.
  • Проверить права доступа.

Системный администратор / DevOps:

  • Использовать токен для автоматизированных задач.
  • Отлавливать rate-limit и логировать ошибки.
  • Предпочесть архивы релизов для крупных бинарников.

Дизайнер / контент-менеджер:

  • Проверить формат (png, jpg, svg) и скачать через Raw.
  • Убедиться в правильности имени и метаданных файла.

Критерии приёмки

  • Файл скачан и открывается корректно (текст без мусора, бинарный файл читаем приложением).
  • Имя и расширение соответствуют ожидаемым.
  • Для важных артефактов контрольная сумма совпадает (если доступна).
  • Если использовался API — ответ вернул 200 и корректный download_url или сырой контент.

Примеры ошибок и как их править

  • Если скачанный файл имеет расширение .txt — переименуйте его в нужный формат.
  • Если curl возвращает HTML вместо файла — вероятно, вы попали на страницу с ограничением или требующей аутентификации; проверьте заголовки и авторизацию.
  • Если download_url равен null для директории — вы запрашивали папку; получите список и выберите файл.

Схема принятия решения

flowchart TD
  A[Нужен файл из репозитория?] --> B{Приватный репозиторий?}
  B -- Нет --> C[Открыть файл в браузере и нажать Raw]
  B -- Да --> D{Автоматизация нужна?}
  D -- Да --> E[Использовать curl/wget с ACCESS_TOKEN или gh]
  D -- Нет --> F[Открыть в браузере, войти в GitHub, скачать через Raw]
  C --> G[Файл скачан]
  E --> G
  F --> G

Итоги

Скачать отдельный файл с GitHub легко — через кнопку Raw в браузере или напрямую через raw.githubusercontent.com с помощью wget/curl. Для приватных репозиториев и автоматизации используйте персональные токены или GitHub CLI. Если файл большой или это бинарный артефакт, рассмотрите клонирование репозитория, git LFS или релизы проекта.

Важно: всегда проверяйте права доступа и корректность расширений/контента после скачивания.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро