Comment lier à un numéro de ligne spécifique sur github

372

Je sais que je peux créer un lien vers un numéro de ligne spécifique dans un fichier sur un dépôt github (je suis sûr que j'ai déjà vu cela auparavant) ...

Est-ce que quelqu'un peut me dire comment faire ça?

sfletche
la source

Réponses:

588

Ne vous contentez pas d'un lien vers les numéros de ligne! Assurez-vous également d'utiliser l' URL canonique . Sinon, lorsque ce fichier est mis à jour, vous aurez une URL qui pointe vers les mauvaises lignes!

Comment faire un lien permanent vers les bonnes lignes:

Cliquez sur le numéro de ligne souhaité (comme la ligne 18), et l'URL de votre navigateur sera #L18clouée à la fin. Vous cliquez littéralement sur le 18côté gauche, pas sur la ligne de code. Ressemble à ça:

ligne 18 sélectionnée

Et maintenant, l'URL de votre navigateur ressemble à ceci:

https://github.com/git/git/blob/master/README#L18

Si vous souhaitez sélectionner plusieurs lignes, maintenez simplement la touche Maj enfoncée et cliquez sur un deuxième numéro de ligne, comme la ligne 20. Ressemble à ceci:

entrez la description de l'image ici

Et maintenant, l'URL de votre navigateur ressemble à ceci:

https://github.com/git/git/blob/master/README#L18-L20

Voici la partie importante:

Maintenant, obtenez l'url canonique pour ce commit particulier en appuyant sur la ytouche. L'URL de votre navigateur changera pour devenir quelque chose comme ceci:

https://github.com/git/git/blob/5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3/README#L18-L20

Ce lien contient le hachage SHA réel pour ce commit particulier, plutôt que la version actuelle du fichier master. Cela signifie que ce lien fonctionnera pour toujours et ne pointera pas vers les lignes 18 à 20 de la future version de ce fichier.

Profitez maintenant de la lueur de votre nouveau lien permanent. ;-)

mise à jour 29/09/2017: Comme l'a souligné @watashiSHUN, github a maintenant facilité l'obtention du lien permanent en fournissant un ...menu à gauche après avoir sélectionné une ou plusieurs lignes. Veuillez également voter pour la réponse de @ watashiSHUN .

Menu de permalien GitHub

mise à jour du 25/03/2016: cas d' espèce - dans l'exemple ci-dessus, j'ai fait référence au fichier "README" dans l'URL. Ces URL non canoniques fonctionnaient réellement lorsque cette réponse a été écrite. Mais maintenant, ces URL ne fonctionnent plus depuis qu'elles ont READMEété déplacées vers README.md. Mais l'URL canonique avec le hachage SHA fonctionne toujours, comme prévu.

broc.seib
la source
3
La touche y ne fait rien pour moi. Cela a-t-il changé? Essayer depuis Google Chrome Dev Channel.
k0pernikus
4
Cela fonctionne toujours ... Les documents disent toujours d'utiliser la yclé aussi ... help.github.com/articles/getting-permanent-links-to-files
broc.seib
2
ce décalage + clic sur la deuxième ligne d'un bloc est bon! J'étais en train de modifier manuellement l'URL pour ajouter la deuxième ligne :). question de suivi cependant, que se passe-t-il si je veux que les lignes 2, 4 et 17-22 soient mises en évidence? Est-ce possible ou puis-je mettre en surbrillance un seul bloc à la fois?
penchant
3
@ tr3buchet Je viens d'envoyer une requête ping au support github - ce n'est pas possible pour le moment. Ils ont dit qu'ils envisageraient la fonctionnalité, mais aucune promesse. J'ai proposé que le format ressemble à quelque chose L18-L20,L29, et qu'une personne puisse CTRLcliquer pour ajouter des lignes non consécutives. Je pense que votre idée est une excellente suggestion et serait très utile.
broc.seib
2
Que faire si READMEest README.md?
zwcloud
56

@ broc.seib a une réponse sophistiquée , je veux juste souligner qu'au lieu d'appuyer sur ypour obtenir le lien permanent, github a maintenant une interface utilisateur très simple qui vous aide à y parvenir

  1. Sélectionnez une ligne en cliquant sur le numéro de la ligne ou sélectionnez plusieurs lignes en maintenant la pression shift(comme pour la sélection de plusieurs dossiers dans l'explorateur de fichiers) entrez la description de l'image ici

  2. dans le coin droit de la première ligne que vous avez sélectionnée, développez ...et cliquezcopy permalink entrez la description de l'image ici

  3. ça y est, un lien avec les lignes sélectionnées et valider le hachage est copié dans votre presse - papiers : https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4
watashiSHUN
la source
18

Cliquez sur le numéro de ligne, puis copiez et collez le lien à partir de la barre d'adresse. Pour sélectionner une plage, cliquez sur le numéro, puis sur Maj, cliquez sur le numéro suivant.

Alternativement, les liens sont un format relativement simple, ajoutez simplement #L<number>à la fin pour ce numéro de ligne spécifique, en utilisant le lien vers le fichier. Voici un lien vers la troisième ligne du gitréférentiel README:

https://github.com/git/git/blob/master/README#L3

Capture d'écran avec ligne en surbrillance et ligne d'adresse modifiée

Leigh
la source
3
N'oubliez pas que si le fichier change, cette URL pointera toujours vers la ligne 3, qui pourrait contenir du nouveau code, et pourrait ne pas être ce que vous vouliez! J'ai proposé une autre solution qui fournit un lien permanent. Astuce: appuyez simplement sur y. ;-)
broc.seib
4
Le lien est rompu
pmrotule
12

un lien permanent vers un extrait de code est collé dans un champ de commentaire de demande d'extraction

Vous pouvez utiliser des permaliens pour inclure des extraits de code dans les problèmes, les relations publiques, etc.

Références:

https://help.github.com/en/articles/creating-a-permanent-link-to-a-code-snippet

Gayan Weerakutti
la source
2
Très joli gif!
Giovanni Benussi
Désolé pour le hors-sujet, mais quel outil utilisez-vous pour le faire?
Giovanni Benussi
@GiovanniBenussi C'est de GitHub. Voir le lien.
Gayan Weerakutti
Je veux dire pour le gif :-P hahaha
Giovanni Benussi
1
@GiovanniBenussi Je ne sais pas ce que réversible utilisé mais parfois je fais des gifs comme celui-ci en utilisant un bel outil appelé "screentogif", vous devriez l'essayer github.com/NickeManarin/ScreenToGif
SamGamgee
6

De nombreux éditeurs (mais aussi voir la section Commandes ci-dessous) prennent en charge la liaison avec le numéro de ligne ou la plage d'un fichier sur GitHub ou BitBucket (ou autres). Voici une courte liste:

Atome

Ouvrir sur GitHub

Emacs

git-link

Texte sublime

GitLink

Vigueur

gitlink-vim


Commandes

  • git-link - Sous-commande Git pour obtenir un lien de repo-browser vers un objet git
  • ghwd - Ouvre l'URL github qui correspond à la branche et au répertoire de travail actuels de votre shell
DBagBaggerWithSwagger
la source
0

Lié à la façon de lier le README.mdréférentiel GitHub à un numéro de ligne spécifique de code

Vous avez trois cas:

  1. Nous pouvons créer un lien vers ( commit personnalisé )

    Mais Link sera toujours lié à l'ancienne version du fichier, qui ne contiendra PAS de nouvelles mises à jour dans la branche principale par exemple. Exemple:

    https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
    
  2. Nous pouvons créer un lien vers ( branche personnalisée ) comme (branche principale). Mais le lien sera TOUJOURS lié à la dernière version du fichier qui contiendra de nouvelles mises à jour. En raison de nouvelles mises à jour, le lien peut pointer vers un numéro de ligne métier non valide. Exemple:

    https://github.com/username/projectname/blob/master/file.txt#L10
    
  3. GitHub ne peut PAS créer de lien automatique vers un fichier vers (validation personnalisée) ou (branche principale) en raison des problèmes commerciaux suivants:

    • sens des affaires en ligne , pour y accéder dans le nouveau fichier
    • longueur du code en surbrillance cible qui peut être modifiée
ahmednabil88
la source
0

Pour une ligne dans une demande de tirage.

https://github.com/foo/bar/pull/90/files#diff-ce6bf647d5a531e54ef0502c7fe799deR27
https://github.com/foo/bar/pull/
90 <- PR number
/files#diff-
ce6bf647d5a531e54ef0502c7fe799de <- MD5 has of file name from repo root
R <- Which side of the diff to reference (merge-base or head). Can be L or R.
27 <- Line number

Cela vous amènera à une ligne tant que L et R sont corrects. Je ne sais pas s'il existe un moyen de visiter L OR RIe Si le PR ajoute une ligne que vous devez utiliser R. S'il supprime une ligne, vous devez utiliser L.

De: générer l'URL du pointeur de ligne dans la demande d'extraction Github

Vaughan
la source