web-dev-qa-db-fra.com

Comment obtenir certains commit du projet GitHub

J'ai besoin de télécharger l'API Facebook depuis GitHub . Normalement, je clique simplement sur l'onglet "Téléchargements" pour télécharger le dernier code source. Dans ce cas, j'ai besoin d'un commit plus ancien: 91f256424531030a454548693c3a6ca49ca3f35a , mais je ne sais pas comment obtenir le projet complet à partir de ce commit .. .

Est-ce que quelqu'un pourrait m'expliquer comment faire cela?

(BTW, im sur un mac. Je ne sais pas si cela fait une différence).

115
w00

Commencez par cloner le référentiel à l’aide de git, par exemple. avec:

git clone git://github.com/facebook/facebook-ios-sdk.git

Cela télécharge l'historique complet du référentiel afin que vous puissiez passer à n'importe quelle version. Ensuite, passez au référentiel nouvellement cloné:

cd facebook-ios-sdk

... et utilisez git checkout <COMMIT> pour changer le bon commit:

git checkout 91f25642453

Cela vous donnera un avertissement, puisque vous n'êtes plus sur une branche et avez basculé directement vers une version particulière. (Ceci est connu sous le nom d'état "HEAD détaché".) Comme il semblerait que vous souhaitiez uniquement utiliser ce SDK, plutôt que de le développer activement, vous n'avez pas à vous en soucier, sauf si vous souhaitez vous renseigner plus sur le fonctionnement de git.

172
Mark Longair

Je ne sais pas si c'était là lorsque vous avez posté cette question, mais le meilleur moyen de télécharger un commit est de cliquer sur l'onglet commits lorsque vous consultez un référentiel. Ensuite, au lieu de cliquer sur le nom de validation, cliquez sur Parcourir le référentiel à cet endroit du bouton Historique avec le symbole <> à droite du nom/message de validation, et enfin sur le symbole Télécharger le bouton Zip qui apparaît lorsque vous cliquez sur le bouton Cloner ou Télécharger.

J'espère que ça vous aide les gars.

112
Sivan

La réponse de Sivan en gif  enter image description here

1.Cliquez sur les commits dans github

2.Sélectionnez le code de navigation à droite de chaque commit. 

3.Cliquez sur télécharger Zip, qui téléchargera le code source au moment de la validation. 

20
Suraj K Thomas

Le moyen le plus simple que j'ai trouvé pour récupérer un commit perdu (qui n'existe que sur github et pas localement) est de créer une nouvelle branche incluant ce commit.

  1. Avoir le commit ouvert (url comme: github.com/org/repo/commit/long-commit-sha)
  2. Cliquez sur "Parcourir les fichiers" en haut à droite
  3. Cliquez sur le menu déroulant "Arbre: short-sha ..." en haut à gauche
  4. Tapez un nouveau nom de branche
  5. git pull la nouvelle branche en local
7
Jeff

Pour télécharger simplement un commit en utilisant la forme abrégée SHA1 à 7 chiffres, procédez comme suit:

Exemple de travail:

https://github.com/python/cpython/archive/31af650.Zip  

La description:  

 `https://github.com/username/projectname/archive/commitshakey.Zip`

Si vous avez la longue clé de hachage 31af650ee25f65794b75d4dfefed6fe4758781c1, obtenez simplement les 7 premiers caractères 31af650. C'est la valeur par défaut pour GitHub.

4
user1767754

En plus de la réponse acceptée:

Pour voir les hachages, vous devez utiliser la commande suggérée "git checkout hash ", vous pouvez utiliser git log. Cependant, selon vos besoins, il existe un moyen plus simple que de copier/coller des hachages.

Vous pouvez utiliser git log --oneline pour lire de nombreux messages de validation dans un format plus compressé. 

Disons que vous voyez ceci une liste d'une ligne des commits avec un minimum d'informations et des hachages seulement partiellement visibles:

hash111 (HEAD -> master, Origin/master, Origin/HEAD)
hash222 last commit
hash333 I want this one
hash444 did something
....

Si vous voulez last commit, vous pouvez utiliser git checkout master^. Le ^ vous donne le commit avant le maître. Alors hash222.

Si vous voulez le n-ième dernier commit, vous pouvez utiliser git checkout master~n. Par exemple, utiliser git checkout master~2 vous donnerait le commit hash333.

0
Smogen

Le titre de la question est ambigu.

0
Id2ndR