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:
- Downloadmap(credits voor fregante)
- Het is ook geïntegreerdin de uitstekende Verfijnde Githubchrome-extensie als een knop in de Github-webgebruikersinterface.
- GitZip(credits voor Kino– stem op zijn antwoord hier)
- DownGit(met dank aan Minhas Kamal– stem op zijn antwoord hier)
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 lodash
als voorbeeld.
-
Navigeer naar de map die je wilt downloaden. Laten we
/test
downloaden van demaster
branch.
-
Wijzig de URL voor subversie. Vervang
tree/master
doortrunk
.https://github.com/lodash/lodash/tree/master/test
?https://github.com/lodash/lodash/trunk/test
-
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
master
branch, gebruik dantrunk
. Het volledige pad is dustrunk/foldername
- Als je geïnteresseerd bent in
foo
branch, gebruik danbranches/foo
. De
volledige pad ziet eruit alsbranches/foo/foldername
- Protip: je kunt desgewenst
svn ls
gebruiken 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-
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
Gebruik:
- Op elke GitHub-opslagplaatspagina.
- Dubbelklik gewoon op het lege gedeelte van de items die je nodig hebt.
- Klik op de downloadknop rechtsonder.
- Bekijk het voortgangsdashboard en wacht tot de browsertrigger is gedownload.
- Haal het ZIP-bestand op.
Token ophalen:
- Klik op het GitZip-extensiepictogram in uw browser.
- Klik op de link “Normaal” of “Privé” naast “Token ophalen”.
- GitZip-machtiging autoriseren op Github-authenticatiepagina.
- Terug naar de repo-pagina van het begin.
- 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 svn
hebt, kun je svn export
gebruiken 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/
/trunk
toegevoegd aan het einde
Voordat u svn export
uitvoert, 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-archive
maakt een gecomprimeerd zip- of tar-archief van een git-repository. Enkele dingen die het speciaal maken:
- Je kunt kiezen welke bestanden of mappen in de git-repository je wilt archiveren.
- Het archiveert niet de map
.git/
, of niet-getrackte bestanden in de repository waarop het draait. - 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/usage
vanuit 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
- Op een Mac heb je waarschijnlijk al SVN (om te testen, open gewoon terminal en
typ “svn”of “welke svn”~ zonder de aanhalingstekens) - Op Github: zoek het Github-pad naar uw git-map (niet de repo) door op de specifieke mapnaam in een repo te klikken
- Kopieer het pad uit de adresbalk van de browser
- Open Terminalen typ: svn export
- Plak vervolgens het adres in (bijv.):
https://github.com/mingsai/Sample-Code/tree/ master/HeadsUpUI - Vervang de woorden: boom/meester
- met het woord: stam
- Typ de doelmap voor de bestanden in (in dit voorbeeld I
sla de doelmap op in de map Downloads voor de
huidige gebruiker) - Hier is spatie alleen de spatiebalk, niet het woord (spatie) ~/Downloads/HeadsUpUI
- 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 cleanup
uit 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.
-
Maak een map.
-
Initialiseer een Git-repository. (
git init
) -
Schakel afrekenen inschakelen. (
git config core.sparsecheckout true
) -
Vertel Git welke mappen je wilt (echo 2015/brand/May(verwijs naar de map waaraan je wilt werken) >>
.git/info/sparse-checkout
) -
Voeg de afstandsbediening toe (
git remote add -f origin https://jafartke.com/mkt-imdev/DVM.git
) -
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 Downloads
rechtsboven.
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 githubdl
dat 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-components
hetzelfde 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 --filter
van 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 d1
van 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/:path
die 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/master
door trunk
installeer vervolgens git-svn
door 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-checkout
die 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
--sparse
checkt alleen directorybestanden op het hoogste niveau van degit
repository uit in werkkopiegit sparse-checkout add t
voegt stapsgewijs det
submap vangit
toe/checkt deze uit
Andere elementen
git sparse-checkout init
doet enkele voorbereidingen om gedeeltelijk afrekenen mogelijk te maken--filter=blob:none
optimaliseert het ophalen van gegevens door alleen noodzakelijke git-objecten te downloaden (kijk op gedeeltelijke kloonfunctievoor meer informatie)--cone
versnelt 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:
- Gebruik wget om de gegevens van GitHub te halen (met behulp van de onbewerkte bestandsweergave).
- Laat upstream-projecten de vereiste gegevenssubset publiceren als build-artefacten.
- 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 svn
voor 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 curl
en awk
om 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 curl
en 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
oftree/master
mettrunk
- 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 lxml
zal 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.
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
en doe
svn afrekenen https://github.com/tensorflow/models/trunk/research /deeplab
bestanden worden gedownload naar de deeplab-map in de huidige map.