Download een enkele map of map van een GitHub-opslagplaats

Hoe kan ik alleen een specifieke map of map downloaden van een externe Git-repo die op GitHub wordt gehost?

Zeg dat het voorbeeld van GitHub-repo hier leeft:

[email protected]:foobar/Test.git

De directorystructuur:

Test/
+-- foo/ 
¦   +-- a.py
¦   L-- b.py   
L-- bar/
    +-- c.py
    L-- d.py

Ik wil alleen de map foodownloaden en niet het hele testproject klonen.


Antwoord 1, autoriteit 100%

Update april 2021: er zijn een paar tools gemaakt door de community die dit voor je kunnen doen:

Opmerking: als u een groot aantal bestanden probeert te downloaden, moet u mogelijk een token aan deze hulpprogramma’s verstrekken om snelheidsbeperking te voorkomen.


Originele (handmatige) aanpak:Het uitchecken van een individuele map wordt niet standaard ondersteund door git, maar Github kan dit doen via SVN. Als je je code uitcheckt met subversion, zal Github in wezen de repo converteren van git naar subversion op de backend, en vervolgens de gevraagde directory aanbieden.

Hier leest u hoe u deze functie kunt gebruiken om een ​​specifieke map te downloaden. Ik gebruik de populaire javascript-bibliotheek lodashals voorbeeld.

  1. Navigeer naar de map die je wilt downloaden. Laten we /testdownloaden van de masterbranch.
    github repo-URL-voorbeeld

  2. Wijzig de URL voor subversie. Vervang tree/masterdoor trunk.

    https://github.com/lodash/lodash/tree/master/test?

    https://github.com/lodash/lodash/trunk/test

  3. Download de map. Ga naar de opdrachtregel en pak de map met SVN.

svn checkout https://github.com/lodash/lodash/trunk/test

Misschien zie je niet meteen activiteit omdat Github tot 30 seconden nodig heeft om grotere repositories te converteren, dus wees geduldig.

Uitleg over volledige URL-indeling:

  • Als je geïnteresseerd bent in de masterbranch, gebruik dan trunk. Het volledige pad is dus trunk/foldername
  • Als je geïnteresseerd bent in foobranch, gebruik dan branches/foo. De
    volledige pad ziet eruit als branches/foo/foldername
  • Protip: je kunt desgewenst svn lsgebruiken om beschikbare tags en branches te zien voordat je gaat downloaden

Dat is alles! Github ondersteunt ook meer subversiefuncties, inclusief ondersteuning voor committen en pushen wijzigingen.


Antwoord 2, autoriteit 62%

Ga naar DownGit> Voer uw URL in > Downloaden!

U kunt DIRECT DOWNLOADENof DOWNLOAD LINKmaken voor elke openbare GitHub-map of -bestand van DownGit. Hier is een eenvoudige demonstratie-


DownGit


U kunt ook de eigenschappen van het gedownloade bestand configureren- gedetailleerd gebruik.


Disclaimer:ik liep tegen hetzelfde probleem aan als de vraagsteller en kon geen goede oplossing vinden. Dus Ik heb deze tool eerst voor mijn eigen gebruik gemaakten daarna voor iedereen geopend 🙂


Antwoord 3, autoriteit 50%

Twee opties voor deze functie:

Optie 1: GitZip-browserextensie

Chrome-extensie, Firefox-add-on

Gebruik:

  1. Op elke GitHub-opslagplaatspagina.
  2. Dubbelklik gewoon op het lege gedeelte van de items die je nodig hebt.
  3. Klik op de downloadknop rechtsonder.
  4. Bekijk het voortgangsdashboard en wacht tot de browsertrigger is gedownload.
  5. Haal het ZIP-bestand op.

Token ophalen:

  1. Klik op het GitZip-extensiepictogram in uw browser.
  2. Klik op de link “Normaal” of “Privé” naast “Token ophalen”.
  3. GitZip-machtiging autoriseren op Github-authenticatiepagina.
  4. Terug naar de repo-pagina van het begin.
  5. Blijven gebruiken.

Optie 2: Github gh-pagina

http://kinolien.github.io/gitzipmet behulp van GitHub API en JSZip, FileSaver .js-bibliotheken.

Stap1: Voer de github-URL in in het veld rechtsboven.
Stap 2: Druk op enter of klik op downloaden om zip direct te downloaden of klik op zoeken om de lijst met submappen en bestanden te bekijken.
Stap 3: Klik op de knop “Zipbestand downloaden” of “Bestand ophalen” om bestanden op te halen.

In de meeste gevallen werkt het prima, behalve dat de map meer dan 1.000 bestanden bevat, vanwege de Github Trees API-beperking. (verwijst naar Github API#Contents)

En het kan ook privé/openbare repo’s ondersteunen en de snelheidslimiet upgraden, als je een GitHub-account hebt en de “get token”-link op deze site gebruikt.


Antwoord 4, autoriteit 14%

Als je svnhebt, kun je svn exportgebruiken om dit te doen:

svn export https://github.com/foobar/Test.git/trunk/foo

Let op het URL-formaat:

  • De basis-URL is https://github.com/
  • /trunktoegevoegd aan het einde

Voordat u svn exportuitvoert, is het goed om eerst de inhoud van de directory te verifiëren met:

svn ls https://github.com/foobar/Test.git/trunk/foo

Antwoord 5, autoriteit 6%

Voor een generieke git repo:

Als je bestanden wilt downloaden en niet de repository met geschiedenis wilt klonen, kun je dit doen met git-archive.

git-archivemaakt een gecomprimeerd zip- of tar-archief van een git-repository. Enkele dingen die het speciaal maken:

  1. Je kunt kiezen welke bestanden of mappen in de git-repository je wilt archiveren.
  2. Het archiveert niet de map .git/, of niet-getrackte bestanden in de repository waarop het draait.
  3. Je kunt een specifieke branch, tag of commit archiveren. Projecten die met git worden beheerd, gebruiken dit vaak om archieven van versies van het project (bèta, release, 2.0, enz.) te genereren die gebruikers kunnen downloaden.

Een voorbeeld van het maken van een archief van de map docs/usagevanuit een externe opslagplaats waarmee u bent verbonden via ssh:

# in terminal
$ git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage > /tmp/usage_docs.tar

Meer informatie in deze blogposten de git-documentatie.

Opmerking over GitHub-opslagplaatsen:

GitHub staat geen git-archive-toegangtoe. ??


Antwoord 6, autoriteit 3%

Niets mis met andere antwoorden, maar ik dacht dat ik stapsgewijze instructies zou delen voor degenen die voor het eerst door dit proces dwalen.

Een enkele map downloaden van een github-repository (Mac OS X):

~ Om Terminal te openen, klikt u op spotlight en typt u terminal en drukt u op enter

  1. Op een Mac heb je waarschijnlijk al SVN (om te testen, open gewoon terminal en
    typ “svn”of “welke svn”~ zonder de aanhalingstekens)
  2. Op Github: zoek het Github-pad naar uw git-map (niet de repo) door op de specifieke mapnaam in een repo te klikken
  3. Kopieer het pad uit de adresbalk van de browser
  4. Open Terminalen typ: svn export
  5. Plak vervolgens het adres in (bijv.):
    https://github.com/mingsai/Sample-Code/tree/ master/HeadsUpUI
  6. Vervang de woorden: boom/meester
  7. met het woord: stam
  8. Typ de doelmap voor de bestanden in (in dit voorbeeld I
    sla de doelmap op in de map Downloads voor de
    huidige gebruiker)
  9. Hier is spatie alleen de spatiebalk, niet het woord (spatie) ~/Downloads/HeadsUpUI
  10. De laatste terminalopdracht toont de volledige opdracht om de . te downloaden
    map (vergelijk het adres met stap 5) svn export
    https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI
    ~/Downloads/HeadsUpUI

BTW – Als je Windows of een ander platform gebruikt, kun je een binaire download van subversion (svn) vinden op http:// /subversion.apache.org

~ Als u de map wilt afrekenen in plaats van hem gewoon te downloaden, probeer dan de svn-help te gebruiken (tldr: vervang exportdoor afrekenen)

Bijwerken

Met betrekking tot de opmerking over het hervatten van een onderbroken download/afrekenen. Ik zou proberen svn cleanupuit te voeren, gevolgd door svn update. Zoek ZO naar aanvullende opties.


Antwoord 7, autoriteit 2%

Degene die aan een specifieke map werkt, moet die specifieke map zelf klonen. Volg hiervoor onderstaande stappen door spaarzaam afrekenen te gebruiken.

  1. Maak een map.

  2. Initialiseer een Git-repository. (git init)

  3. Schakel afrekenen inschakelen. (git config core.sparsecheckout true)

  4. Vertel Git welke mappen je wilt (echo 2015/brand/May(verwijs naar de map waaraan je wilt werken) >> .git/info/sparse-checkout)

  5. Voeg de afstandsbediening toe (git remote add -f origin https://jafartke.com/mkt-imdev/DVM.git)

  6. Haal de bestanden op (git pull origin master)


Antwoord 8, autoriteit 2%

Je kunt niet; in tegenstelling tot Subversion, waar elke submap afzonderlijk kan worden uitgecheckt, werkt Git op een hele repository-basis.

Voor projecten waar fijnmazige toegang nodig is, kun je submodules gebruiken — elke submodule is een afzonderlijk Git-project en kan dus afzonderlijk worden gekloond.

Het is denkbaar dat een Git-front-end (bijv. GitHub’s webinterface, of gitweb) ervoor zou kunnen kiezen om een ​​interface voor je te bieden om een ​​bepaalde map uit te pakken, maar voor zover ik weet doet geen van hen dat (hoewel ze je wel download individuele bestanden, dus als de map niet te veel bestanden bevat, is dat een optie)

Bewerken– GitHub biedt eigenlijk toegang via SVN, waardoor je precies dit kunt doen (volgens de opmerking). Zie https://github.com/ blog/1438-improved-svn-here-to-stay-old-svn-going-awayvoor de laatste instructies om dit te doen


Antwoord 9, autoriteit 2%

Samenvatting 2019

Er zijn verschillende manieren om dit aan te pakken, afhankelijk van of je dit handmatig of programmatisch wilt doen.

Er zijn vier opties die hieronder worden samengevat. En voor degenen die liever een meer praktische uitleg hebben, heb ik een YouTube-video samengesteld: Download Individual Bestanden en mappen van GitHub.

Ook heb ik een vergelijkbaar antwoord op StackOverflowgeplaatst voor degenen die afzonderlijke bestanden van GitHub moeten downloaden (als in tegenstelling tot mappen).


1. GitHub-gebruikersinterface

  • Er is een downloadknop op de startpagina van de repository. Dit downloadt natuurlijk de hele repo, waarna u de download moet uitpakken en vervolgens handmatig de specifieke map die u nodig heeft, moet slepen.

2. Hulpprogramma’s van derden

  • Er zijn verschillende browserextensies en web-apps die dit aankunnen, met DownGitals één van hen. Plak de GitHub-URL in de map (bijv. https://github.com/babel/babel-eslint/tree/master/lib) en druk op de knop “Download”.

3. Subversie

  • GitHub ondersteunt git-archive niet (de git-functie waarmee we specifieke mappen kunnen downloaden). GitHub ondersteunt echter een aantal Subversion-functies, waarvan we er één voor dit doel kunnen gebruiken. Subversion is een versiebeheersysteem (een alternatief voor git). Je moet Subversion geïnstalleerd hebben. Pak de GitHub-URL voor de map die u wilt downloaden. U moet deze URL echter wijzigen. U wilt de link naar de repository, gevolgd door het woord “trunk”, en eindigend met het pad naar de geneste map. Met andere woorden, met hetzelfde voorbeeld van een maplink dat ik hierboven noemde, zouden we “tree/master” vervangen door “trunk”. Open ten slotte een terminal, navigeer naar de map waarnaar u de inhoud wilt downloaden, typ de volgende opdracht (vervang de URL door de URL die u hebt gemaakt): svn export https://github.com/babel/babel-eslint/trunk/lib, en druk op enter.

4. GitHub-API

  • Dit is de oplossing die je nodig hebt als je deze taak programmatisch wilt uitvoeren. En dit is eigenlijk wat DownGit onder de motorkap gebruikt. Gebruik GitHub’s REST APIom een ​​script te schrijven dat een GET-verzoek doet naar het inhoudseindpunt. Het eindpunt kan als volgt worden geconstrueerd: https://api.github.com/repos/:owner/:repo/contents/:path. Na het vervangen van de tijdelijke aanduidingen is een voorbeeldeindpunt: https://api.github.com/repos/babel/babel-eslint/contents/lib. Dit geeft u JSON-gegevens voor alle inhoud die in die map bestaat. De gegevens hebben alles wat je nodig hebt, inclusief of de inhoud een map of bestand is, een download-URL als het een bestand is en een API-eindpunt als het een map is (zodat je de gegevens voor die map kunt krijgen). Met behulp van deze gegevens kan het script recursief alle inhoud in de doelmap doorlopen, mappen maken voor geneste mappen en alle bestanden voor elke map downloaden. Bekijk DownGit’s codevoor inspiratie.

Antwoord 10

Als je de map echt gewoon wilt “downloadenen niet “klonen”het (voor ontwikkeling), is de gemakkelijkste manier om gewoon een kopievan de meest recente versie van de repository (en dus een map/bestand erin), zonder de hele repo te hoeven klonen of zelfs git te installeren, is het downloaden van een zip-archief (voor elke repo , fork, branch, commit, etc.) door naar de gewenste repository/fork/branch/commit op GitHub te gaan (bijv. http(s)://github.com/<user>/<repo>/commit/<Sha1>voor een kopie van de bestanden zoals ze waren na een specifieke vastlegging) en selecteer de knop Downloadsrechtsboven.

Dit archiefformaat bevat geen van de git-repo-magie, alleen de bijgehouden bestanden zelf (en misschien een paar .gitignore-bestanden als ze werden bijgehouden, maar je kunt die negeren :p) – dat betekent dat als de code verandert en als je op de hoogte wilt blijven, moet je het handmatig opnieuw downloaden, en het betekent ook dat je het niet als een git-repository kunt gebruiken…

Ik weet niet zeker of dat is wat u in dit geval zoekt (nogmaals, “download”/view vs “clone”/develop), maar het kan toch nuttig zijn…


Antwoord 11

Er is een Python3-pip-pakket genaamd githubdldat dit kan*:

export GIT_TOKEN=1234567890123456789012345678901234567890123
pip install githubdl
githubdl -u http://github.com/foobar/test -d foo

De projectpagina is hier

* Disclaimer: ik heb dit pakket geschreven.


Antwoord 12

Als je vertrouwd bent met unix-commando’s, heb je hier geen speciale afhankelijkheden of web-apps voor nodig. Je kunt de repo downloaden als een tarball en alleen ontsleutelen wat je nodig hebt.

Voorbeeld (woff2-bestanden uit een submap in fontawesome):

curl -L https://api.github.com/repos/FortAwesome/Font-Awesome/tarball | tar xz --wildcards "*/web-fonts-with-css/webfonts/*.woff2" --strip-components=3
  • Meer over het linkformaat: https://developer.github .com/v3/repos/contents/#get-archive-link(inclusief hoe je een zip-bestand of specifieke branches/refs kunt krijgen)
  • Bewaar het eerste deel van het pad (*/) zodat het overeenkomt met een willekeurige map. Github maakt een wrapper-map met de commit-ref in de naam, zodat deze niet bekend kan zijn.
  • U wilt waarschijnlijk dat --strip-componentshetzelfde is als het aantal schuine strepen (/) in het pad (vorig argument).

Hiermee wordt de hele tarball gedownload. Gebruik de SVN-methode die in de andere antwoorden wordt genoemd als dit moet worden vermeden of als je aardig wilt zijn voor de GitHub-servers.


Antwoord 13

Nog een specifiek voorbeeld:

Alsof ik de map ‘iOS Pro Geo’ van de url wil downloaden

https://github.com/alokc83/APRESS-Books-Source- Code-/boom/master/%20Pro%20iOS%20Geo

en ik kan dit doen via

svn checkout https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo

Let op stamin het pad

Bewerkt: (volgens de opmerking van Tommie C)

Ja, het gebruik van exportin plaats van checkoutzou een schone kopie opleveren zonder extra git-repositorybestanden.

svn export https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo

Bewerkt:Als de boom/master niet in de url staat, Fork hem dan en hij staat wel in de Forked url.


Antwoord 14

U kunt een eenvoudige download van de directorystructuur doen:

git archive --remote [email protected]:foobar/Test.git HEAD:foo | tar xf -

Maar als je van plan bent om het uit te proberen, en in staat te zijn om commits te doen en terug te duwen, nee, dat kan niet.


Antwoord 15

git clone --filtervan git 2.19 werkt nu op GitHub

Getest op 18-09-2020, git 2.25.1.

Deze optie is toegevoegd samen met een update van het externe protocol, en het voorkomt echt dat objecten van de server worden gedownload.

Bijvoorbeeld om alleen objecten te klonen die nodig zijn voor d1van deze repository: https://github.com/cirosantilli/test-git-partial-cloneIk kan doen:

git clone \
  --depth 1 \
  --filter=blob:none \
  --no-checkout \
  https://github.com/cirosantilli/test-git-partial-clone \
;
cd test-git-partial-clone
git checkout master -- d1

Ik heb dit in meer detail behandeld op: Git: Hoe kloon ik alleen een submap van een Git-repository?


Antwoord 16

Geen van de antwoorden hielp in mijn situatie. Als je voor Windows ontwikkelt, heb je waarschijnlijk geen svn. In veel situaties kan men er ook niet op rekenen dat gebruikers Git geïnstalleerd hebben, of om andere redenen geen volledige repositories willen downloaden. Sommige mensen die deze vraag beantwoordden, zoals Willem van Ketwich en aztack, maakten gereedschappen om deze taak te volbrengen. Als de tool echter niet is geschreven voor de taal die u gebruikt, of als u geen bibliotheek van derden wilt installeren, werken deze niet.

Er is echter een veel eenvoudigere manier. GitHub heeft een API waarmee je een enkel bestand of de inhoud van een hele map kunt downloaden met GET-verzoeken. U kunt toegang krijgen tot een directory met https://api.github.com/repos/:owner/:repo_name/contents/:pathdie een JSON-object retourneert dat alle bestanden in de directory opsomt. In de opsomming is een link opgenomen naar de onbewerkte inhoud van het bestand, de parameter download_url. Het bestand kan dan worden gedownload via die URL.

Het is een proces in twee stappen dat de mogelijkheid vereist om GET-verzoeken in te dienen, maar dit kan in vrijwel elke taal en op elk platform worden geïmplementeerd. Het kan worden gebruikt om bestanden of mappen op te halen.


Antwoord 17

je kunt git-svn op de volgende manier gebruiken.

vervang eerst tree/masterdoor trunk
installeer vervolgens git-svndoor sudo apt install git-svn

git svn clone https://github.com/lodash/lodash/trunk/test

Op deze manier hoef je niet de moeite te nemen om svn in te stellen, speciaal voor Windows-gebruikers.


Antwoord 18

git sparse-checkout

Git 2.25.0bevat een nieuwe experimentele opdracht git sparse-checkoutdie de bestaande functie gebruiksvriendelijker maakt, samen met enkele belangrijke prestatievoordelen voor grote opslagplaatsen. (Het GitHub-blog)

Voorbeeld met huidige versie:

git clone --filter=blob:none --sparse https://github.com/git/git.git
cd git
git sparse-checkout init --cone
git sparse-checkout add t

Vooral

  • --sparsecheckt alleen directorybestanden op het hoogste niveau van de gitrepository uit in werkkopie
  • git sparse-checkout add tvoegt stapsgewijs de tsubmap van git
  • toe/checkt deze uit

Andere elementen

  • git sparse-checkout initdoet enkele voorbereidingen om gedeeltelijk afrekenen mogelijk te maken
  • --filter=blob:noneoptimaliseert het ophalen van gegevens door alleen noodzakelijke git-objecten te downloaden (kijk op gedeeltelijke kloonfunctievoor meer informatie)
  • --coneversnelt ook prestaties verbeteren door meer beperkte opnamepatronen voor bestanden toe te passen

GitHub-status

GitHub evalueert deze functie nog steeds intern terwijl deze is ingeschakeld op een select aantal opslagplaatsen […]. Naarmate de functie zich stabiliseert en volwassen wordt, houden we u op de hoogte van de voortgang. (docs)


Antwoord 19

Dit is hoe ik het doe met git v2 .25.0, ook getest met v2.26.2. Deze truc werkt niet met v2.30.1

TLDR

git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv
# requires git 2.25.x to 2.26.2
git sparse-checkout set data/haarcascades

Je kunt Dockergebruiken om te voorkomen dat een specifieke versie van git wordt geïnstalleerd

git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv
# requires git 2.25.x to 2.26.2
docker run --rm -it -v $PWD/:/code/ --workdir=/code/ alpine/git:v2.26.2 sparse-checkout set data/haarcascades

Volledige oplossing

# 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

Referenties


Antwoord 20

Om de bovenstaande antwoorden te versterken, een echt voorbeeld van een echte GitHub-repository naar een lokale map zou zijn:

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

Soms helpt een concreet voorbeeld de voorgestelde vervangingen te verduidelijken.


Antwoord 21

Ik gebruik linux dus , zet dit in ~/.bashrc , genaamd even 😀 $HOME/.bashrc

git-dowloadfolder(){
a="$1"
svn checkout ${a/tree\/master/trunk}
}

ververs dan de shell met

source ~/.bashrc 

gebruik het dan met git-downloadfolder blablabla 😀


Antwoord 22

Het is een van de weinige plaatsen waar SVN beter is dan Git.

Uiteindelijk hebben we drie opties gekozen:

  1. Gebruik wget om de gegevens van GitHub te halen (met behulp van de onbewerkte bestandsweergave).
  2. Laat upstream-projecten de vereiste gegevenssubset publiceren als build-artefacten.
  3. Geef het op en gebruik de volledige kassa. Het is een groot succes bij de eerste build, maar tenzij je veel verkeer krijgt, is het niet al te veel gedoe in de volgende builds.

Antwoord 23

Om welke reden dan ook, de svn-oplossing werkt niet voor mij, en aangezien ik svnvoor iets anders niet nodig heb, had het geen zin om tijd te besteden ik probeerde het te maken, dus ik zocht naar een eenvoudige oplossing met behulp van tools die ik al had. Dit script gebruikt alleen curlen awkom alle bestanden in een GitHub-directory te downloaden die wordt beschreven als "/:user:repo/contents/:path".

De geretourneerde hoofdtekst van een aanroep naar de GitHub REST API
"GET /repos/:user:repo/contents/:path"commando retourneert een object dat een "download_url"link bevat voor elk bestand in een directory.

Dit opdrachtregelscript roept die REST-API aan met behulp van curlen verzendt het resultaat via AWK, dat alle regels behalve de “download_url” -regels uitfiltert, aanhalingstekens en komma’s uit de links wist en vervolgens downloadt de links met een andere call to curl.

curl -s https://api.github.com/repos/:user/:repo/contents/:path | awk \
     '/download_url/ { gsub("\"|,", "", $2); system("curl -O "$2"); }'

Antwoord 24

Nog maar 5 stappen te gaan

  • Download SVNvan hier.
  • Open CMDen ga naar SVN bin directoryzoals:
    cd %ProgramFiles%\SlikSvn\bin
  • Stel dat ik deze directory-URL
    wil downloaden
    https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples
  • Vervangen
    tree/develop
    of tree/mastermet trunk
  • Voer nu dit laatste commando uit om de map in dezelfde map te downloaden.
svn export https://github.com/ZeBobo5/Vlc.DotNet/trunk/src/Samples

Antwoord 25

Ons team heeft hiervoor een bash-script geschreven omdat we SVN niet op onze kale server wilden installeren.

https://github.com /ojbc/docker/blob/master/java8-karaf3/files/git-download.sh

Het gebruikt de github API en kan als volgt vanaf de opdrachtregel worden uitgevoerd:

git-download.sh https://api.github.com/repos/ojbc/main/contents/shared/ojb-certs

Antwoord 26

Ik werk met CentOS 7-servers waarop ik geen root-toegang heb, noch git, svn, etc (en dat wil ik ook niet!) dus heb ik een python-script gemaakt om elke github-map te downloaden: https://github.com/andrrrl/github-folder-downloader

Gebruik is eenvoudig, kopieer gewoon het relevante deel van een github-project, laten we zeggen dat het project https is ://github.com/MaxCDN/php-maxcdn/, en je wilt een map waar alleen enkele bronbestanden staan, dan moet je zoiets doen als:

$ python gdownload.py "/MaxCDN/php-maxcdn/tree/master/src" /my/target/dir/
(zal een doelmap maken als deze niet bestaat)

Het vereist lxmlbibliotheek, kan worden geïnstalleerd met easy_install lxml
Als je geen root-toegang hebt (zoals ik), kun je een .pydistutils.py-bestand maken in je $HOME-map met deze inhoud:

[install]
user=1

En easy_install lxmlzal gewoon werken (ref: https://stackoverflow.com/a/33464597/591257).


Antwoord 27

Open repo naar codesandbox door github te vervangen door githubbox in url en ga op codesandbox naar het bestandsmenu en exporteer het als een zip.

Voor de volgende opslagplaats:
https://github.com/geist-org/react/ boom/master/voorbeelden/aangepaste thema’s

Voer de volgende url in:
https://githubbox.com/geist-org/react/tree/master/examples/custom-themes

Ga in codesandbox naar het bestandsmenu en exporteer het als een zip.


Antwoord 28

Je kunt ghgetgebruiken met elke URL die uit de adresbalk is gekopieerd:

ghget https://github.com/fivethirtyeight/data/tree/master/airline-safety

Het is een op zichzelf staand draagbaar shell-script dat geen SVN gebruikt (wat niet werkte voor mij op een grote repo). Het maakt ook geen gebruik van de API, dus er is geen token voor nodig en er is geen snelheidsbeperking.

Disclaimer: ik heb het gehaald.


Antwoord 29

Als u een map uit GitHub wilt exporteren, vervangt u “/tree/master/” in de url van de map door “/trunk/”.

Bijvoorbeeld om de directory van de volgende URL te exporteren:

https://github.com/liferay/liferay-plugins/tree/master/portlets/sample-hibernate-portlet

voer het volgende commando uit:

svn export https://github.com/liferay/liferay-plugins/trunk/portlets/sample-hibernate-portlet

Antwoord 30

Een duidelijk antwoord hierop is om eerst de schildpad te svn via de volgende link.

https://tortoisesvn.net/downloads.html

zet tijdens de installatie de CLI-optie aan, zodat deze kan worden gebruikt vanaf de opdrachtregelinterface.

kopieer de git hub subdirectory link.

Voorbeeld

https://github.com/tensorflow/models/tree/master /onderzoek/deeplab

boom/master vervangen door stam

https://github.com/tensorflow/models/trunk/research/deeplab

en doe

svn afrekenen https://github.com/tensorflow/models/trunk/research /deeplab

bestanden worden gedownload naar de deeplab-map in de huidige map.

Other episodes