How to link to specific line number on github

GitGithub

Git Problem Overview


I know I can link to a specific line number on a file on a GitHub repo (I'm sure I've seen this before)...

Can someone tell me how to do this?

Git Solutions


Solution 1 - Git

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:

line 18 selected

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:

enter image description here

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 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. ;-)

update 9/29/2017: 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.

GitHub permalink menu

update 3/25/2016: 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 SHA hash still works, just as expected.

update 4/17/2022: Some files are "renderable" like markdown files. Github requires ?plain=1 to show the content of them instead of rendering.

Solution 2 - Git

@broc.seib has a sophisticated answer, I just want to point out that instead of pressing y to get the permanent link, github now has a very simple UI that helps you to achieve it

  1. Select line by clicking on the line number or select multiple lines by downholding shift(same as how you select multiple folders in file explorer) enter image description here

  2. on the right hand corner of the first line you selected, expand ... and click copy permalink enter image description here

  3. that's it, a link with selected lines and commit hash is copied to your clipboard: https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4

Solution 3 - Git

a permalink to a code snippet is pasted into a pull request comment field

You can you use permalinks to include code snippets in issues, PRs, etc.

References:

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

Solution 4 - Git

Click the line number, and then copy and paste the link from the address bar. To select a range, click the number, and then shift click the later number.

Alternatively, the links are a relatively simple format, just append #L<number> to the end for that specific line number, using the link to the file. Here's a link to the third line of the git repository's README:

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

Screenshot with highlighted line and the modified address line

Solution 5 - Git

Many editors (but also see the Commands section below) support linking to a file's line number or range on GitHub or BitBucket (or others). Here's a short list:

Atom

Open on GitHub

Emacs

git-link

Sublime Text

GitLink

Vim

gitlink-vim


Commands

  • git-link - Git subcommand for getting a repo-browser link to a git object
  • ghwd - Open the github URL that matches your shell's current branch and working directory

Solution 6 - Git

Related to how to link to the README.md of a GitHub repository to a specific line number of code

You have three cases:

  1. We can link to (custom commit)

    But Link will ALWAYS link to old file version, which will NOT contains new updates in the master branch for example. Example:

    https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
    
  2. We can link to (custom branch) like (master-branch). But the link will ALWAYS link to the latest file version which will contain new updates. Due to new updates, the link may point to an invalid business line number. Example:

    https://github.com/username/projectname/blob/master/file.txt#L10
    
  3. GitHub can NOT make AUTO-link to any file either to (custom commit) nor (master-branch) Because of following business issues:

    • line business meaning, to link to it in the new file
    • length of target highlighted code which can be changed

Solution 7 - Git

Linking to line number on GitHub wiki

I was having some trouble finding how to link to a specific location on GitHub wiki and ended up finding this out. This might be common knowledge but I didn't know this and someone else might find it useful.

When browsing a wiki file you can put your mouse over a specific header text and a link icon will apear. Clicking this link icon, you're browser navigation url will be updated (ex: https://github.com/user/repository/wiki/Test#title-1). This would be the link to that specific location on the wiki file.

enter image description here

Solution 8 - Git

If you want to get a preview rendering of a markdown code snippet, after copying the link as mentioned in the other answer, remove the ?plain=1 parameter from the link.

For example, the following will show a plain text link:

github.com/<organization>/<repository>/blob/<branch_name>/README.md?plain=1#L14

After removing the ?plain=1 parameter, it will show the preview of the code:

github.com/<organization>/<repository>/blob/<branch_name>/README.md#L14

A link to a markdown with preview

See GitHub Docs: Creating a permanent link to a code snippet for more information.

Solution 9 - Git

For a line in a pull request.

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

This will take you to a line as long as L and R are correct. I am not sure if there is a way to visit L OR R. I.e If the PR adds a line you must use R. If it removes a line you must use L.

From: https://stackoverflow.com/questions/46383301/generate-line-pointer-url-into-github-pull-request

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsfletcheView Question on Stackoverflow
Solution 1 - Gitbroc.seibView Answer on Stackoverflow
Solution 2 - GitwatashiSHUNView Answer on Stackoverflow
Solution 3 - GitGayan WeerakuttiView Answer on Stackoverflow
Solution 4 - GitLeighView Answer on Stackoverflow
Solution 5 - GitDBagBaggerWithSwaggerView Answer on Stackoverflow
Solution 6 - Gitahmednabil88View Answer on Stackoverflow
Solution 7 - GitHozeisView Answer on Stackoverflow
Solution 8 - GitMahozadView Answer on Stackoverflow
Solution 9 - GitvaughanView Answer on Stackoverflow