Как скачать zip архив приватного репозитория по url ссылке через токен?

Я делал все по следующим шагам как указано здесь https://stackoverflow.com/a/76922082/15735942:

You can use read-only access token to share a private repository.

git clone https://<username>:<token>@github.com/<username>/<repo>.git To generate a new token:

  1. Go to Settings > Developer Settings > Personal access tokens > Fine-grained tokens > Generate new token.

  2. Select the repositories you want to share under Repository access > Only select repositories.

  3. Set the access level of the token to read-only in Permissions > Repository permissions > Contents > Access: read-only.

  4. Finally, click on Generate token.

Я пробовал создавать токен и использовать следующий формат ссылки: https://<username>:<token>@github.com/<username>/<repository>/archive/refs/heads/main.zip, но вместо скачивания zip файла я получаю ошибку 404: Not Found. В чём может быть проблема?


Ответы (1 шт):

Автор решения: insolor

По поводу скачивания по ссылке вида

https://<username>:<token>@github.com/<username>/<repository>/archive/refs/heads/<ref>.zip

- такой вариант вполне рабочий, вот проверил через curl:

Скриншоты

При открытии этой же ссылки в браузере предлагает скачать файл.

Проверьте, что все указали правильно, в том числе имя ветки (ветка действительно main, как вы указываете, а не например master).


Другие способы скачивания:

git clone предназначено только для клонирования репозитория, а не для скачивания произвольного файла. Через него можно разве что склонировать репозиторий, потом уже упаковать в zip.

Скачать можно с помощью Github API, как тут показано: Download a repository archive (zip)

Например, через curl:

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/zipball/REF \
  --output file.zip

или утилиту gh (Github CLI):

gh api \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  /repos/OWNER/REPO/zipball/REF > file.zip
  • OWNER - владелец репозитория
  • REPO - имя репозитория
  • REF - ветка (например, main или master), тэг или хэш коммита

При использовании утилиты gh предварительно нужно будет авторизоваться командой gh auth login.

Например, так (токен будет взят из файла mytoken.txt):

gh auth login --with-token < mytoken.txt

Для утилиты gh кроме прав на чтение репозиторев нужно будет еще право read:org, для запроса через curl (или просто http запросов) это не обязательно.

→ Ссылка