Trouver un commit sur GitHub étant donné le hachage de commit

286

Je suis assez nouveau sur Github et j'ai rencontré un problème d'amateur.

On m'a demandé de faire une revue de code et j'ai reçu un hachage de validation, mais j'ai essayé de chercher dans Git si je peux rechercher en utilisant des hachages de validation mais je n'ai rien trouvé.

Existe-t-il un moyen de trouver le code modifié simplement en utilisant le hachage de validation?

dopplesoldner
la source
46
Je trouve tout à fait bizarre que github ne reconnaisse pas les hachages dans les recherches et vous montre le commit s'il y en a un qui correspond à ce hachage.
Craig Ringer
En fait @CraigRinger, la recherche github correspondra aux hachages s'ils se produisent dans une demande de tirage . En effet, si vous le souhaitez, vous pouvez rechercher dans l'ensemble de github un préfixe de hachage à sept caractères. Mais ce doit être une demande de pull, pas n'importe quel commit.
Todd Owen
4
@ToddOwen Ce qui est bien, mais pas le point. Il doit correspondre aux hachages de validation dans un référentiel lorsque vous effectuez une recherche dans ce référentiel, c'est vraiment loufoque que ce n'est pas le cas.
Craig Ringer
2
@CraigRinger C'est maintenant le cas! Voir ma nouvelle réponse .
Todd Owen

Réponses:

379

Une URL du formulaire https://github.com/<owner>/<project>/commit/<hash>vous montrera les modifications introduites dans ce commit. Par exemple, voici une correction de bogue récente que j'ai apportée à l'un de mes projets sur GitHub:

https://github.com/jerith666/git-graph/commit/35e32b6a00dec02ae7d7c45c6b7106779a124685

Vous pouvez également raccourcir le hachage en n'importe quel préfixe unique, comme ceci:

https://github.com/jerith666/git-graph/commit/35e32b


Je sais que vous venez de poser des questions sur GitHub, mais pour être complet: si vous avez extrait le référentiel, à partir de la ligne de commande, vous pouvez obtenir essentiellement la même chose avec l'une de ces commandes (des préfixes uniques fonctionnent ici aussi):

git show 35e32b6a00dec02ae7d7c45c6b7106779a124685
git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685

Remarque: Si vous raccourcissez trop le hachage de validation, la ligne de commande vous donne un message de désambiguïsation utile, mais GitHub renverra simplement un 404.

Matt McHenry
la source
Je suis tombé sur cela lorsque j'essayais de tracer une assertion dans mongo et j'ai trouvé qu'il y avait un modèle d'URL similaire pour afficher un fichier spécifique, étant donné le hachage d'un commit: github.com/$owner/$project/blob/$hash/path /to/file.ext - par exemple github.com/mongodb/mongo/blob/…
RubyTuesdayDONO
En cela :, git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685le -1est nécessaire car sinon il montrerait tous les anciens commits; il est bon de savoir que vous pouvez utiliser les quatre nombres initiaux du hachage (le minimum dans mes tests), car il n'y a pas de complétion automatique pour le hachage; et vous ne pouvez pas spécifier la branche comme ceci: git log master -p -1 35e3. Version Git: 1.7.9.5.
Rafael Barros
Un obs plus, mais un très important: encore une fois, vous ne pouvez pas spécifier une branche, mais il recherche automatiquement les branches locales et distantes lorsque vous donnez un hachage. Donc, oui, vous pouvez rechercher un diff distant spécifique avant de fusionner avec le référentiel local par la ligne de commande.
Rafael Barros
1
Au cas où quelqu'un se demanderait (je l'étais!), Cela fonctionne également avec les 8 premiers du hachage à la fois sur github: github.com/jerith666/git-graph/commit/35e32b6a et sur la ligne de commande:git log -p -1 35e32b6a
SimplGy
7
C'est un peu stupide que l'interface utilisateur ne rend pas cela plus facile qu'il ne l'est ... J'espère que la demande de fonctionnalité le fera.
ocroquette
49

Afficher le commit unique:
https://github.com/<user>/<project>/commit/<hash>

Afficher le journal:
https://github.com/<user>/<project>/commits/<hash>

Voir le repo complet:
https://github.com/<user>/<project>/tree/<hash>

<hash> peut être de n'importe quelle longueur tant qu'elle est unique.

qwertzguy
la source
1
si la longueur est d'au moins 7 caractères c'est ok
Kasun Siyambalapitiya
3
Aucune longueur minimale pour le hachage de validation n'est de 4 caractères (encore une fois, tant qu'il est unique dans l'ensemble du référentiel)
qwertzguy
21

La possibilité de rechercher des validations a récemment été ajoutée à GitHub.

Pour rechercher un hachage, entrez simplement au moins les 7 premiers caractères dans la zone de recherche. Ensuite, sur la page des résultats, cliquez sur l'onglet "Validation" pour voir masterles validations correspondantes (mais uniquement sur la branche par défaut, généralement ), ou sur l'onglet "Problèmes" pour voir les demandes d'extraction contenant la validation.

Pour être plus explicite, vous pouvez ajouter le hash:préfixe à la recherche, mais ce n'est pas vraiment nécessaire.

Il existe également une API REST (au moment de la rédaction, elle est toujours en préversion).

Todd Owen
la source
2
Je suis surpris que cela fonctionne réellement de cette façon. Ce n'est donc pas intuitif. Par défaut, Github affichera l'onglet "Code", sans aucun résultat. Ne devrait-il pas afficher le seul onglet contenant des résultats par défaut?
Summerian
Donc, pour être clair, si vous avez votre propre installation d'entreprise de github, vous pouvez trouver n'importe quel commit dans n'importe quel dépôt en le recherchant comme ceci: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Notez que j'ai également essayé sur Github, et cela a fonctionné là aussi, par exemple https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks