Загрузите одну папку или каталог из репозитория GitHub
Как я могу загрузить только определенную папку или каталог с удаленного репозитория Git, размещенного на GitHub?
Скажем, пример репозитория GitHub живет здесь:
git@github.com:foobar/Test.git
Его структура каталогов:
Test/
foo/
a.py
b.py
bar/
c.py
d.py
Я хочу скачать только папку foo, а не клонировать весь тестовый проект.
49 ответов
Обновление сентябрь 2016: сообщество разработало несколько инструментов, которые могут сделать это для вас:
GitZip (Кредиты для Kino - оставь свой ответ прямо здесь!)
DownGit ( Кредит Minhas Kamal - оповестите его ответ прямо здесь!)
Git не поддерживает это, но Github делает это через SVN. Если вы извлекаете свой код с помощью Subversion, Github по существу преобразует репозиторий из Git в Subversion на серверной части, а затем обслуживает запрошенный каталог.
Вот как вы можете использовать эту функцию для загрузки определенной папки. Я буду использовать популярную библиотеку JavaScript lodash
В качестве примера.
Получить URL репо. Сначала скопируйте URL-адрес репозитория Github в буфер обмена.
Измените URL для подрывной деятельности. Я хочу скачать папку на
/docs
отmaster
ветка, так что я буду добавлятьtrunk/docs
, Полный URL сейчасhttps://github.com/lodash/lodash/trunk/docs
, См. Мое примечание ниже для более подробного объяснения того, почему мы должны использовать этот формат URL.Загрузите папку. Перейдите в командную строку и возьмите папку с SVN.
svn checkout https://github.com/lodash/lodash/trunk/docs
Вы можете не увидеть никаких действий сразу, потому что Github занимает до 30 секунд для конвертации больших репозиториев, так что наберитесь терпения.
Полное объяснение формата URL:
- Если вы заинтересованы в
master
филиал, использованиеtrunk
вместо. Таким образом, полный путьtrunk/foldername
- Если вы заинтересованы в
foo
филиал, использованиеbranches/foo
вместо. Полный путь выглядит какbranches/foo/foldername
- Protip: вы можете использовать
svn ls
чтобы увидеть доступные теги и ветви перед загрузкой, если хотите
Это все! Github также поддерживает больше возможностей subversion, включая поддержку фиксации и отправки изменений.
Перейдите в DownGit > Введите свой URL > Скачать!
Теперь вы можете ПРЯМО ЗАГРУЗИТЬ или создать ССЫЛКУ ЗАГРУЗКИ для любого общедоступного каталога GitHub или файла (особенно большого файла) из DownGit! Вот простая демонстрация
https://cloud.githubusercontent.com/assets/5456665/17822364/940bded8-6678-11e6-9603-b84d75bccec1.gif
Вы также можете настроить свойство загруженного файла - подробное использование.
Два варианта этой функции:
Вариант 1. Расширения браузера
Использование:
- На любой странице репозитория GitHub.
- Просто дважды кликните по нужным предметам.
- Нажмите кнопку загрузки в правом нижнем углу.
- Посмотрите на панель прогресса и дождитесь загрузки триггера браузера.
- Получить файл ZIP.
Получить токен:
- Нажмите значок расширения GitZip в вашем браузере.
- Нажмите ссылку "Обычный" или "Личный", кроме "Получить токен".
- Авторизуйте разрешение GitZip на странице авторизации Github.
- Вернуться на страницу репо начала.
- Продолжайте использовать.
Вариант 2: Github GH-страницы
http://kinolien.github.io/gitzip с использованием API GitHub и библиотек JSZip, FileSaver.js.
Шаг 1: Введите URL-адрес github в поле справа вверху.
Шаг 2: Нажмите Enter или нажмите "Загрузить" для загрузки zip напрямую или нажмите "Поиск" для просмотра списка подпапок и файлов.
Шаг 3: Нажмите "Скачать файл Zip" или "Получить файл", чтобы получить файлы.
В большинстве случаев это работает нормально, за исключением того, что папка содержит более 1000 файлов из-за ограничения API Github Trees. (относится к Github API # Contents)
Кроме того, он может поддерживать частные / публичные репозитории и обновлять ограничение скорости, если у вас есть учетная запись GitHub и используется ссылка "получить токен" на этом сайте.
Если у вас есть svn
, ты можешь использовать svn export
сделать это:
svn export https://github.com/foobar/Test.git/trunk/foo
Обратите внимание на формат URL:
- Базовый URL
https://github.com/
/trunk
добавлено в конце
Прежде чем бежать svn export
хорошо сначала проверить содержимое каталога с помощью:
svn ls https://github.com/foobar/Test.git/trunk/foo
Для Общего git Repo:
Если вы хотите загружать файлы, а не клонировать репозиторий с историей, вы можете сделать это с помощью git-archive
,
git-archive
создает сжатый zip или tar архив из git репозитория. Некоторые вещи, которые делают его особенным:
- Вы можете выбрать, какие файлы или каталоги в репозитории git архивировать.
- Это не архивирует
.git/
папку или любые неотслеживаемые файлы в хранилище, в котором он запущен. - Вы можете заархивировать конкретную ветку, тег или коммит. Проекты, управляемые с помощью git, часто используют это для создания архивов версий проекта (бета-версия, выпуск 2.0 и т. Д.) Для загрузки пользователями.
Пример создания архива docs/usage
каталог из удаленного репозитория, к которому вы подключены с помощью ssh:
# in terminal
$ git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage > /tmp/usage_docs.tgz
Больше информации в этом посте и документации git.
Примечание по GitHub Repos:
GitHub не позволяет git-archive
доступ. ☹️
Попробовав все ответы, лучшим решением для меня было:
Редактор на основе vscode на GitHub.
Плюсы:
- не требует никаких дополнительных инструментов, таких как токены API.
- Нет ограничений на размер контента
- Сохраняет как каталог или файл, а не архив.
инструкции
- Зайдите в любой репозиторий. (например , https://github.com/RespiraWorks/Ventilator/tree/master/software)
- Нажмите .или замените
.com
с.dev
в URL, чтобы открыть репозиторий во внутреннем редакторе GitHub. - В
Explorer
панели (слева или нажмите Ctrl+Shift+E), щелкните правой кнопкой мыши нужный файл/папку и выберите загрузку. - в
Select Folder
диалоговом окне выберите каталог на вашем диске, в котором вы хотите, чтобы выбранный файл/папка существовал.
Примечание
Я пробовал другие решения, например, в принятом ответе, но,
- Не хочу устанавливать и учиться
svn
только для этого. - Другие инструменты, такие как Download Directory, Refined GitHub , GitZip, DownGit , либо требуют токены API, либо не могут загружать большие каталоги.
Другие опции
- VSCode с расширением Remote Repositories , чтобы открыть репозиторий и загрузить файл/папку.
git clone --filter
из Git 2.19
Эта опция фактически пропустит получение ненужных объектов с сервера:
git clone --depth 1 --no-checkout --filter=blob:none \
"file://$(pwd)/server_repo" local_repo
cd local_repo
git checkout master -- mydir/
Сервер должен быть настроен с:
git config --local uploadpack.allowfilter 1
git config --local uploadpack.allowanysha1inwant 1
Для поддержки этой функции в v2.19.0 было сделано расширение для удаленного протокола Git, но в то время серверная поддержка отсутствует. Но это уже можно локально протестировать.
Я рассмотрел это более подробно в разделе: Как клонировать только подкаталог репозитория Git?
Я создал проект с открытым исходным кодом, который называется https://github.com/VahidN/GitHubFolderDownloader. Это позволяет загружать одну папку хранилища без клонирования или загрузки всего хранилища.
Ничего плохого в других ответах нет, но я просто решил поделиться пошаговыми инструкциями для тех, кто впервые проходит через этот процесс.
Как загрузить одну папку из репозитория github (Mac OS X):
~ Чтобы открыть терминал, просто нажмите прожектор и введите терминал, затем нажмите Enter
- На Mac у вас, скорее всего, уже есть SVN (для тестирования просто откройте терминал и введите "svn" или "which svn" ~ без кавычек)
- На Github: найдите путь Github к вашей папке git (не репо), щелкнув конкретное имя папки в репо
- Скопируйте путь из адресной строки браузера
- Откройте Терминал и введите: svn export
- Следующая вставка в адрес (например): https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI
- Заменить слова: дерево / мастер
- со словом: ствол
- Введите папку назначения для файлов (в этом примере я сохраняю папку назначения внутри папки "Загрузки" для текущего пользователя)
- Здесь пробел - это просто пробел, а не слово (пробел) ~/Downloads/HeadsUpUI
- Последняя команда терминала показывает полную команду для загрузки папки (сравните адрес с шагом 5). Svn export https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI ~ / Downloads / HeadsUpUI
Кстати, если вы работаете в Windows или на другой платформе, вы можете найти бинарную загрузку Subversion (SVN) на http://subversion.apache.org/
~ Если вы хотите извлечь папку, а не просто загрузить ее, попробуйте воспользоваться справкой svn (tldr: заменить экспорт на извлечение)
Обновить
По поводу комментария о возобновлении прерванной загрузки / оформления заказа. Я бы попробовал бежать svn cleanup
с последующим svn update
, Пожалуйста, ищите SO для дополнительных опций.
Кто бы ни работал над определенной папкой, он должен клонировать эту конкретную папку, поэтому, пожалуйста, следуйте нижеприведенным шагам ** --- с помощью SPARSE CHECKOUT --- **
Шаг 1: Создайте каталог.
Шаг 2: Инициализируйте Git-репозиторий. (git init
)
Шаг 3: Включить разреженные проверки. (git config core.sparsecheckout true
)
Шаг 4: Сообщите Git, какие каталоги вы хотите (echo 2015/brand/May(обратитесь к папке, над которой вы хотите работать) >> .git/info/sparse-checkout
)
Шаг 5: Добавьте пульт (git remote add -f origin https://jafartke.com/mkt-imdev/DVM.git
)
Заключительный шаг 6: извлечение файлов (git pull origin master
)
Ты не можешь; в отличие от Subversion, где каждый подкаталог может быть извлечен отдельно, Git работает на основе всего хранилища.
Для проектов, где необходим более детальный доступ, вы можете использовать подмодули - каждый подмодуль является отдельным проектом Git и, следовательно, может быть клонирован индивидуально.
Вполне возможно, что внешний интерфейс Git (например, веб-интерфейс GitHub или gitweb) мог бы предоставить вам интерфейс для извлечения данной папки, но, насколько мне известно, никто из них этого не делает (хотя они позволяют вам скачивать отдельные файлы)., так что если папка не содержит слишком много файлов, это вариант)
Редактировать - GitHub на самом деле предлагает доступ через SVN, что позволит вам сделать именно это (согласно комментарию). См. https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away для получения последних инструкций о том, как это сделать.
Итоги 2019 г.
Есть множество способов справиться с этим, в зависимости от того, хотите ли вы сделать это вручную или программно.
Ниже приведены четыре варианта. А для тех, кто предпочитает более практические объяснения, я собрал видео на YouTube: Загрузите отдельные файлы и папки с GitHub.
Кроме того, я опубликовал аналогичный ответ на Stackru для тех, кому нужно загружать отдельные файлы с GitHub (в отличие от папок).
1. Пользовательский интерфейс GitHub
- На главной странице репозитория есть кнопка загрузки. Конечно, при этом будет загружено все репо, после чего вам нужно будет разархивировать загрузку, а затем вручную перетащить нужную папку.
2. Сторонние инструменты
- Существует множество расширений браузера и веб-приложений, которые могут справиться с этим, и DownGit является одним из них. Просто вставьте URL-адрес GitHub в папку (например,
https://github.com/babel/babel-eslint/tree/master/lib
) и нажмите кнопку "Загрузить".
3. Subversion
- GitHub не поддерживает git-archive (функция git, которая позволяет нам загружать определенные папки). Однако GitHub поддерживает множество функций Subversion, одну из которых мы можем использовать для этой цели. Subversion - это система контроля версий (альтернатива git). Вам понадобится установленная Subversion. Возьмите URL-адрес GitHub для папки, которую вы хотите загрузить. Однако вам нужно будет изменить этот URL. Вам нужна ссылка на репозиторий, за которой следует слово "ствол" и в конце путь к вложенной папке. Другими словами, используя тот же пример ссылки на папку, который я упоминал выше, мы заменим "tree / master" на "trunk". Наконец, откройте терминал, перейдите в каталог, в который вы хотите загрузить контент, введите следующую команду (заменив URL-адрес созданным вами URL-адресом):
svn export https://github.com/babel/babel-eslint/trunk/lib
и нажмите ввод.
4. GitHub API
- Это решение, которое вам понадобится, если вы хотите выполнить эту задачу программно. И это на самом деле то, что DownGit использует под капотом. Используя REST API GitHub, напишите сценарий, который выполняет запрос GET к конечной точке содержимого. Конечная точка может быть построена следующим образом:
https://api.github.com/repos/:owner/:repo/contents/:path
. После замены заполнителей пример конечной точки:https://api.github.com/repos/babel/babel-eslint/contents/lib
. Это дает вам данные JSON для всего содержимого, которое существует в этой папке. В данных есть все, что вам нужно, включая то, является ли содержимое папкой или файлом, URL-адрес загрузки, если это файл, и конечную точку API, если это папка (чтобы вы могли получить данные для этой папки). Используя эти данные, сценарий может рекурсивно просматривать все содержимое целевой папки, создавать папки для вложенных папок и загружать все файлы для каждой папки. Посмотрите код DownGit для вдохновения.
Если вы действительно хотите просто "скачать" папку, а не "клонировать" ее (для разработки), самый простой способ - просто получить копию самой последней версии репозитория (и, следовательно, папки / файла в ней), без необходимости клонировать весь репозиторий или даже установить git в первую очередь, это загрузить zip-архив (для любого репо, ветки, ветки, коммита и т. д.), перейдя в нужный репозиторий /fork/branch/commit на GitHub (например http(s)://github.com/<user>/<repo>/commit/<Sha1>
для копии файлов, какими они были после определенного коммита) и выбора Downloads
Кнопка в правом верхнем углу.
Этот формат архива не содержит никакой магии git-repo, только сами отслеживаемые файлы (и, возможно, несколько файлов.gitignore, если они были отслежены, но вы можете игнорировать их:p) - это означает, что если код изменяется, и вы хотите оставайтесь на вершине, вам придется повторно загрузить его вручную, а это также означает, что вы не сможете использовать его в качестве git-репозитория...
Не уверен, что это то, что вы ищете в этом случае (опять же "скачать" / просмотреть против "клон" / разработать), но это может быть полезно, тем не менее...
Там есть пакет Python3 под названием githubdl
что может сделать это *:
export GIT_TOKEN=1234567890123456789012345678901234567890123
pip install githubdl
githubdl -u http://github.com/foobar/test -d foo
Страница проекта находится здесь
* Отказ от ответственности: я написал этот пакет.
Просто добавьте в начало URL-адреса github: (github.com -> ssgithub.com)
Я создал эту простую веб-страницу, которая делает это за вас, поэтому просто:
- Перейдите в каталог/файл, который вы хотите загрузить на GitHub.
- Добавлять
ss
в начало URL в адресной строке
Нажав на загрузку, вы должны заархивировать только содержимое этого каталога и загрузить его на свое устройство.
Если вы знакомы с командами Unix, вам не нужны специальные зависимости или веб-приложения для этого. Вы можете скачать репо в виде тарбола и распаковать только то, что вам нужно.
Пример (файлы woff2 из подкаталога в fontawesome):
curl -L https://api.github.com/repos/FortAwesome/Font-Awesome/tarball | tar xz --wildcards "*/web-fonts-with-css/webfonts/*.woff2" --strip-components=3
- Подробнее о формате ссылки: https://developer.github.com/v3/repos/contents/ (в том числе о том, как получить zip-файл или конкретные ветки / ссылки)
- Сохранить начальную часть пути (
*/
) соответствовать любому каталогу. Github создает каталог-обертку с именем ref в имени, поэтому он не может быть известен. - Вы, вероятно, хотите
--strip-components
быть равным количеству слешей (/
) в пути (предыдущий аргумент).
Это загрузит весь tarball. Используйте метод SVN, упомянутый в других ответах, если этого следует избегать или если вы хотите быть милым с серверами GitHub.
1.Нажмите на эту ссылку http://kinolien.github.io/gitzip/
2. Вставьте ссылку на папку Github, которую вы хотите скачать.
3.Нажмите на поиск, он покажет все файлы для скачивания.
Примечание:-При использовании поиска нет необходимости вводить токен-ключ;).. сделайте его простым (у)
Вот как я это делаю с git v2.25.0
TL; DR
# requires git >= v2.25.x
git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv
git sparse-checkout set data/haarcascades
# or git sparse-checkout set data/haar*
Полное решение
# bare minimum clone of opencv
$ git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
...
Resolving deltas: 100% (529/529), done.
# Downloaded only ~7.3MB , takes ~3 seconds
# du = disk usage, -s = summary, -h = human-readable
$ du -sh opencv
7.3M opencv/
# Set target dir
$ cd opencv
$ git sparse-checkout set data/haarcascades
...
Updating files: 100% (17/17), done.
# Takes ~10 seconds, depending on your specs
# View downloaded files
$ du -sh data/haarcascades/
9.4M data/haarcascades/
$ ls data/haarcascades/
haarcascade_eye.xml haarcascade_frontalface_alt2.xml haarcascade_licence_plate_rus_16stages.xml haarcascade_smile.xml
haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalface_alt_tree.xml haarcascade_lowerbody.xml haarcascade_upperbody.xml
haarcascade_frontalcatface.xml haarcascade_frontalface_default.xml haarcascade_profileface.xml
haarcascade_frontalcatface_extended.xml haarcascade_fullbody.xml haarcascade_righteye_2splits.xml
haarcascade_frontalface_alt.xml haarcascade_lefteye_2splits.xml haarcascade_russian_plate_number.xml
Рекомендации
Вы можете использовать git svn следующим образом.
git svn clone https://github.com/lodash/lodash/trunk/test
Таким образом, вам не придется мучиться с настройкой svn, особенно для пользователей Windows.
Вы можете сделать простую загрузку дерева каталогов:
git archive --remote git@github.com:foobar/Test.git HEAD:foo | tar xf -
Но если вы хотите проверить это и иметь возможность делать коммиты и толкать их назад, нет, вы не можете этого сделать.
Еще один конкретный пример:
Как я хочу скачать папку "iOS Pro Geo" из URL
https://github.com/alokc83/APRESS-Books-Source-Code-/tree / master/% 20Pro% 20iOS% 20Geo
и я могу сделать это через
svn checkout https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo
Обратите внимание на ствол в пути
Отредактировано: (согласно комментарию Томми С.)
Да, использование экспорта вместо извлечения даст чистую копию без дополнительных файлов репозитория git.
svn export https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo
Отредактировано: если в url нет дерева / мастера, тогда разместите его, и оно будет там в URL-адресе.
git sparse-checkout
Git 2.25.0 включает новый экспериментальный
git sparse-checkout
, которая упрощает использование существующей функции, а также дает некоторые важные преимущества в производительности для больших репозиториев. (Блог GitHub)
Пример с текущей версией:
git clone --filter=blob:none --sparse https://github.com/git/git.git
cd git
git sparse-checkout init --cone
git sparse-checkout add t
В первую очередь
-
--sparse
проверяет только файлы каталогов верхнего уровняgit
репозиторий в рабочую копию git sparse-checkout add t
постепенно добавляет / проверяетt
подпапкаgit
Прочие элементы
-
git sparse-checkout init
делает некоторые приготовления, чтобы включить частичную оплату --filter=blob:none
оптимизирует выборку данных, загружая только необходимые объекты git (для получения дополнительной информации ознакомьтесь с функцией частичного клонирования)-
--cone
также увеличивает производительность за счет применения более ограниченных шаблонов включения файлов
Статус GitHub
GitHub все еще оценивает эту функцию внутри компании, хотя она включена в нескольких избранных репозиториях [...]. По мере того, как функция стабилизируется и развивается, мы будем держать вас в курсе ее прогресса. (документы)
Ни один из ответов не помог в моей ситуации. Если вы разрабатываете для Windows, у вас, вероятно, нет SVN. Во многих ситуациях нельзя рассчитывать на то, что пользователи установят Git, или не хотят загружать целые репозитории по другим причинам. Некоторые из людей, которые ответили на этот вопрос, такие как Виллем ван Кетвич и Ацтак, создали инструменты для выполнения этой задачи. Однако, если инструмент написан не для языка, который вы используете, или вы не хотите устанавливать стороннюю библиотеку, это не сработает.
Тем не менее, есть гораздо более простой способ. GitHub имеет API, который позволяет вам загружать отдельный файл или весь каталог с помощью запросов GET. Вы можете получить доступ к каталогу, используя https://api.github.com/repos/:owner/:repo_name/contents/:path
который возвращает объект JSON, перечисляющий все файлы в каталоге. В перечисление включена ссылка на необработанное содержимое файла, download_url
параметр. Файл может быть загружен с использованием этого URL.
Это двухэтапный процесс, требующий умения делать запросы GET, но он может быть реализован практически на любом языке, на любой платформе. Он может быть использован для получения файлов или каталогов.
Вы можете использовать ghget с любым URL, скопированным из адресной строки:
ghget https://github.com/fivethirtyeight/data/tree/master/airline-safety
Это автономный переносимый сценарий оболочки, который не использует SVN (что не сработало для меня в большом репо). Он также не использует API, поэтому не требует токена и не ограничен скоростью.
Отказ от ответственности: я сделал это.
Осталось всего 5 шагов
1) Скачать SVN из здесь.
2) Откройте CMD и перейдите в каталог bin SVN, как показано ниже:
cd %ProgramFiles%\SlikSvn\bin
3) Предположим, я хочу загрузить URL этого каталога
https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples
4) Теперь заменитеС
tree/develop or tree/master
trunk
5) Теперь запустите эту последнюю команду, чтобы загрузить папку в том же каталоге.
svn export https://github.com/ZeBobo5/Vlc.DotNet/trunk/src/Samples
Просто чтобы усилить ответы выше, реальный пример из реального репозитория GitHub в локальный каталог:
svn ls https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces
svn export https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces /temp/SvnExport/Washburn
Иногда конкретный пример помогает уточнить предложенные замены.
Это одно из немногих мест, где SVN лучше, чем Git.
В конце мы стремились к трем вариантам:
- Используйте wget, чтобы получить данные из GitHub (используя просмотр необработанных файлов).
- Пусть вышестоящие проекты опубликуют необходимый поднабор данных в качестве артефактов сборки.
- Сдавайся и используй полную кассу. Это большой успех в первой сборке, но если вы не получаете много трафика, в следующих сборках это не слишком хлопотно.
Я использую Linux так, поместите это в ~/.bashrc, называется даже:D $HOME/.bashrc
git-dowloadfolder(){
a="$1"
svn checkout ${a/tree\/master/trunk}
}
затем обновите оболочку
source ~/.bashrc
тогда используй его с git-downloadfolder блаблабла: D
По какой-то причине svn
решение не работает для меня, и поскольку мне не нужно svn
для чего-то еще не имело смысла тратить время на попытки сделать это, поэтому я стал искать простое решение, используя инструменты, которые у меня уже были. Этот скрипт использует толькоcurl
а также awk
для загрузки всех файлов в каталоге GitHub, описанном как "/:user:repo/contents/:path"
.
Возвращенное тело вызова GitHub REST API
"GET /repos/:user:repo/contents/:path"
команда возвращает объект, который включает "download_url"
ссылка для каждого файла в каталоге.
Этот сценарий командной строки вызывает этот REST API, используя curl
и отправляет результат через AWK, который фильтрует все строки, кроме "download_url", стирает кавычки и запятые из ссылок, а затем загружает ссылки, используя другой вызов curl.
curl -s https://api.github.com/repos/:user/:repo/contents/:path | awk \
'/download_url/ { gsub("\"|,", "", $2); system("curl -O "$2"); }'
Наша команда написала сценарий bash для этого, потому что мы не хотели устанавливать SVN на наш сервер.
https://github.com/ojbc/docker/blob/master/java8-karaf3/files/git-download.sh
Он использует github API и может быть запущен из командной строки следующим образом:
git-download.sh https://api.github.com/repos/ojbc/main/contents/shared/ojb-certs