Загрузите определенные файлы из github в командной строке, а не клонируйте весь репо

Как загрузить только 2 файла из github с помощью командной строки?
Что-то в строках:

git fetch git://github.com/username/Project.git/file1
git fetch git://github.com/username/Project.git/file2

Ответ 1

Если вы перейдете на страницу и просмотрите ссылки, предоставленные "raw" (в верхнем левом углу, при просмотре файла). Вы увидите, что вы можете получить к нему доступ:

https://github.com/username/repository/raw/$changeset_hash/path/to/file

Вместо $changeset_hash вы также можете указать ветку (например, мастер) или тег.

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

Доступ к одному файлу непосредственно из .git-репозитория невозможен (насколько я знаю) из-за того, как хранятся данные.

edit:. Когда вы хотите получить доступ к файлу из частного репо, сначала вам нужно создать токен доступа с соответствующими разрешениями в настройках своей учетной записи. Вместо вызова url выше вы можете использовать github API для доступа к содержимому файла. Для получения необработанных данных обязательно используйте заголовок Accept-header для настраиваемых типов мультимедиа. Это может выглядеть примерно так:

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

-O сохранит содержимое в локальном файле с тем же именем, что и имя удаленного файла. Для удобства использования вы можете обернуть его в script. @Chris_Withers предложил отредактировать с хорошим фрагментом python, который, к сожалению, был отклонен, как большая часть изменения ответа.

Ответ 2

Скопируйте ссылку на конкретный файл из GitHub. (Когда вы открываете файл в Github, в правом верхнем углу вы можете увидеть, как открыть файл в необработанном режиме. Откройте его в необработанном режиме и скопируйте URL-адрес)

Теперь используйте команду curl в командной строке для загрузки файла.

curl -o filename raw-link-to-file

Ответ 3

git checkout  

например:

git checkout master~2 file1

(git checkout --help для справки)