Question Télécharger un seul dossier ou répertoire à partir d'un dépôt GitHub


Comment puis-je télécharger uniquement un dossier ou un répertoire spécifique à partir d'un dépôt Git distant hébergé sur GitHub?

Dites l'exemple GitHub repo vit ici:

git@github.com:foobar/Test.git

Sa structure de répertoire:

Test/
    foo/ 
       a.py
       b.py
    bar/
       c.py
       d.py

Je veux télécharger seulement le foo dossier et ne clone pas l'ensemble du projet de test.


687
2017-08-18 10:33


origine


Réponses:


Mise à jour septembre 2016: il existe quelques outils créés par la communauté qui peuvent le faire pour vous:


Git ne supporte pas cela, mais Github le fait via SVN. Si vous extrayez votre code avec subversion, Github convertira essentiellement le repo de git en subversion sur le backend, puis servira le répertoire demandé.

Voici comment vous pouvez utiliser cette fonction pour télécharger un dossier spécifique. Je vais utiliser la bibliothèque javascript populaire lodash par exemple.

  1. Obtenez l'URL de dépôt. Copiez d'abord l'URL du repo Github dans votre presse-papiers. github repo URL example

  2. Modifier l'URL de subversion. Je veux télécharger le dossier à /docs du master branche, donc je vais ajouter trunk/docs. L'URL complète est maintenant https://github.com/lodash/lodash/trunk/docs. Voir ma note ci-dessous pour une explication plus détaillée de la raison pour laquelle nous devons utiliser ce format d'URL.

  3. Télécharger le dossier. Aller à la ligne de commande et récupérer le dossier avec SVN. svn checkout https://github.com/lodash/lodash/trunk/docs

Vous ne verrez peut-être aucune activité immédiatement car Github met jusqu'à 30 secondes pour convertir de plus grands dépôts, alors soyez patient.

Explication du format de l'URL complète:

  • Si vous êtes intéressé par master branche, utilisation trunk au lieu. Donc, le chemin complet est trunk/foldername
  • Si vous êtes intéressé par foo branche, utilisation branches/foo au lieu. le   chemin complet ressemble à branches/foo/foldername
  • Protip: Vous pouvez utiliser svn ls pour voir les tags et les branches disponibles avant de télécharger si vous le souhaitez

C'est tout! Github prend en charge plus de fonctionnalités de subversion aussi, y compris le soutien pour l'engagement et la promotion des changements.


660
2017-08-12 18:54



Deux options pour cette fonctionnalité:

Option 1: Extensions du navigateur

Extension Chrome, Firefox Addon

Usage:

  1. Dans n'importe quelle page de repos GitHub.
  2. Double-cliquez simplement sur les articles dont vous avez besoin.
  3. Cliquez sur le bouton de téléchargement en bas à droite.
  4. Voir le tableau de bord de progression et attendez le téléchargement du déclencheur du navigateur.
  5. Obtenez le fichier ZIP.

Obtenir un jeton:

  1. Cliquez sur l'icône GitZip Extension sur votre navigateur.
  2. Cliquez sur "Normal" ou "Privé" lien en plus de "Get Token".
  3. Autoriser l'autorisation GitZip sur la page d'authentification Github.
  4. Retour à la page de repo du début.
  5. Continuez à utiliser.

Option 2: Github gh-page

http://kinolien.github.io/gitzip en utilisant GitHub API, et JSZip, bibliothèques FileSaver.js.

Etape 1: Entrez l'url github dans le champ en haut à droite.
Étape 2: Appuyez sur Entrée ou cliquez sur Télécharger pour télécharger zip directement ou cliquez sur Rechercher pour afficher la liste des sous-dossiers et des fichiers.
Étape3: Cliquez sur "Télécharger le fichier Zip" ou "Obtenir le fichier" pour obtenir des fichiers.

Dans la plupart des cas, cela fonctionne correctement, sauf que le dossier contient plus de 1 000 fichiers, en raison de la limitation de l'API Github Trees. (fait référence à API Github n ° Contenu)

Et il peut également prendre en charge les repos privé / public et mettre à jour la limite de taux, si vous avez un compte GitHub et utilisez le lien "get token" sur ce site.


356
2017-11-17 09:41



Aller à DownGit > Entrez votre URL> Télécharger!

Maintenant vous pouvez TELECHARGER DIRECTEMENT ou créer LIEN DE TÉLÉCHARGEMENT pour tout répertoire ou fichier public GitHub (fichier spécialement volumineux) de DownGit! Voici une démonstration simple


DownGit


Vous pouvez également configurer la propriété du fichier téléchargé utilisation détaillée.


280
2017-08-10 17:13



Si tu as svn, vous pouvez utiliser svn export pour faire ça:

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

Notez le format de l'URL:

  • L'URL de base est https://github.com/
  • /trunk ajouté à la fin

Avant de courir svn export, il est bon de vérifier d'abord le contenu du répertoire avec:

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

137
2017-08-19 23:00



Pour un git repo générique:

Si vous voulez télécharger des fichiers, ne pas cloner le référentiel avec l'historique, vous pouvez le faire avec git-archive.

git-archive fait une archive compressée zip ou tar d'un dépôt git. Certaines choses qui le rendent spécial:

  1. Vous pouvez choisir les fichiers ou les répertoires du référentiel git à archiver.
  2. Il n'archive pas le .git/ ou tout fichier non suivi dans le référentiel sur lequel il est exécuté.
  3. Vous pouvez archiver une branche, un tag ou un commit spécifique. Les projets gérés avec git l'utilisent souvent pour générer des archives des versions du projet (version bêta, version 2.0, etc.) que les utilisateurs peuvent télécharger.

Un exemple de création d'une archive de docs/usage répertoire d'un repo distant auquel vous êtes connecté avec ssh:

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

Plus d'informations dans ce blog et le documentation git.

Note sur les Repos GitHub:

GitHub ne permet pas git-archive accès. ️


53
2018-04-13 01:17



J'ai créé un projet open source, appelé GitHubFolderDownloader. Il vous permet de télécharger un seul dossier d'un référentiel sans cloner ni télécharger le référentiel entier.


33
2018-06-17 10:16



Rien de mal avec d'autres réponses mais je pensais juste partager des instructions étape par étape pour ceux qui se promènent dans ce processus pour la première fois.

Comment télécharger un seul dossier à partir d'un dépôt github (Mac OS X):

~ Pour ouvrir Terminal, cliquez simplement sur spotlight et tapez terminal puis appuyez sur Entrée

  1. Sur un Mac, vous avez probablement déjà SVN (pour tester uniquement le terminal ouvert et type "svn" ou "quel svn" ~ sans les guillemets
  2. Sur Github: Localisez le chemin Github vers votre dossier git (pas le repo) en cliquant sur le nom du dossier spécifique dans un repo
  3. Copiez le chemin depuis la barre d'adresse du navigateur
  4. Ouvrir le terminal et tapez: svn export
  5. Ensuite, collez l'adresse (par exemple): https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI
  6. Remplacer les mots: arbre / maître 
  7. avec le mot: tronc
  8. Tapez le dossier de destination pour les fichiers (dans cet exemple, je stocker le dossier cible dans le dossier Téléchargements pour le utilisateur actuel)
  9. Ici, l'espace est juste la barre d'espace pas le mot (espace) ~ / Téléchargements / HeadsUpUI
  10. La dernière commande du terminal affiche la commande complète pour télécharger le  dossier (comparez l'adresse à l'étape 5) svn export   https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI  ~ / Téléchargements / HeadsUpUI

BTW - Si vous êtes sur Windows ou une autre plate-forme, vous pouvez trouver un téléchargement binaire de subversion (svn) à http://subversion.apache.org

~ Si vous voulez extraire le dossier plutôt que de le télécharger, essayez svn help (tldr: replace exportation avec check-out)

Mettre à jour

Concernant le commentaire sur la reprise d'un téléchargement / paiement interrompu. J'essaierais de courir svn cleanup suivi par svn update. S'il vous plaît rechercher SO pour des options supplémentaires.


17
2017-09-13 00:37



Vous ne pouvez pas; Contrairement à Subversion, où chaque sous-répertoire peut être extrait individuellement, Git fonctionne sur la base d'un référentiel entier.

Pour les projets où un accès plus fin est nécessaire, vous pouvez utiliser des sous-modules - chaque sous-module est un projet Git distinct, et peut donc être cloné individuellement.

Il est concevable qu'un frontal Git (par exemple l'interface web de GitHub, ou gitweb) puisse choisir de fournir une interface pour que vous puissiez extraire un dossier donné, mais à ma connaissance aucun d'entre eux ne le fait (bien qu'ils vous permettent de télécharger des fichiers individuels , donc si le dossier ne contient pas trop de fichiers, c'est une option)

modifier - GitHub offre un accès via SVN, ce qui vous permettrait de faire exactement cela (selon le commentaire). Voir https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away pour les dernières instructions sur la façon de le faire


15
2017-08-18 10:41