Don’t just link to the line numbers! Be sure to use the canonical URL too. Otherwise when that file is updated, you’ll have a URL that points to the wrong lines!
How to make a permanent link to the right lines:
Click on the line number you want (like line 18), and the URL in your browser will get a #L18
tacked onto the end. You literally click on the 18
at the left side, not the line of code. Looks like this:
And now your browser’s URL looks like this:
https://github.com/git/git/blob/master/README.md?plain=1#L18
If you want multiple lines selected, simply hold down the Shift key and click a second line number, like line 20. Looks like this:
And now your browser’s URL looks like this:
https://github.com/git/git/blob/master/README.md?plain=1#L18-L20
Here’s the important part:
Now get the canonical URL for that particular commit by pressing the Y key. The URL in your browser will change to become something like this:
https://github.com/git/git/blob/5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3/README#L18-L20
That link contains the actual SHA-1 hash for that particular commit, rather than the current version of the file on master
. That means that this link will work forever and not point to lines 18-20 of whatever future version of that file might contain.
Now bask in the glow of your new permanent link. 😉
As pointed out by watashiSHUN, GitHub has now made it easier to get the permanent link by providing a ...
menu on the left after you select one or more lines. Please see watashiSHUN’s answer too.
Case in point — in the example above, I referred to the “README” file in the URL. Those non-canonical URLs actually worked when this answer was written. But now those URLs no longer work since README
was moved to README.md
. But the canonical URL with the SHA-1 hash still works, just as expected.
Some files are “renderable”, like Markdown files. GitHub requires ?plain=1
to show the content of them instead of rendering.