127 votes

Comment télécharger un .zip depuis GitHub pour un commit sha particulier ?

Je veux télécharger un .zip contenant les sources d'une bibliothèque hébergée sur github, mais je ne veux pas le master, car à chaque fois que je télécharge, je pourrais télécharger une version différente.

Cette bibliothèque particulière n'a pas d'étiquettes, donc je ne peux pas l'utiliser.

Alors comment puis-je télécharger le source.zip pour un commit sha spécifique ?

258voto

Zeki Points 1680

Vous pouvez mettre le sha que vous voulez dans l'url de téléchargement :

https://github.com/{username}/{projectname}/archive/{sha}.zip

En règle générale, si vous avez une url qui fonctionne, vous pouvez remplacer "master" par le sha spécifique que vous voulez.

Sur unix :

wget https://github.com/{username}/{projectname}/archive/{sha}.zip

N'oubliez pas que s'il s'agit d'un dépôt privé, wget ne fonctionnera pas à moins que vous ne transmettiez également un jeton OAuth.

Voici plus d'informations à ce sujet :

Difficultés à télécharger les archives Git à partir de Private Repo

44voto

user2722591 Points 449

Lorsque vous visualisez le code du commit, cliquez sur le bouton "Browse Code" en haut à droite, puis cliquez sur "Download ZIP".

8voto

trojanfoe Points 61927

C'est une vieille question, mais je voulais mentionner que si vous voulez juste le commit en tant que patch, et pas le repo entier au moment du commit, vous pouvez utiliser :

$ wget http://github.com/username/repo/commit/sha1.patch
#                        ^^^^^^^^ ^^^^        ^^^^
#                        change   change      change

El /commit y .patch les parties étant la partie importante.

Ceci est particulièrement utile si vous voulez fusionner une modification qui a été annulée il y a un certain temps et qui n'existe donc pas dans le dépôt forgé.

2voto

Noam Manos Points 145

Pour ceux qui sont venus ici en cherchant un moyen de télécharger un fichier (ou un répertoire) particulier d'un commit (ou d'une branche) particulier :

git_user="user-name"
git_project="project-name"
commit_or_branch="sha-id or branch name"
dir_or_file="path/to/dir-or-file"

archive_url="https://github.com/${git_user}/${git_project}/archive/${commit_or_branch}.tar.gz"

wget -O - ${archive_url} | tar xz --strip=1 "${git_project}-${commit_or_branch}/${dir_or_file}"

L'avantage de télécharger l'archive en tant que tar.gz c'est que vous pouvez directement canaliser wget en tar la commande, donc il extraire le gz à la volée .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X