Как сделать ссылку на конкретный номер строки на GitHub

372

Я знаю, что могу ссылаться на определенный номер строки в файле на репозитории github (я уверен, что видел это раньше) ...

Может кто-нибудь сказать мне, как это сделать?

sfletche
источник

Ответы:

589

Не просто ссылки на номера строк! Обязательно используйте канонический URL тоже. В противном случае, когда этот файл будет обновлен, у вас будет URL, указывающий на неправильные строки!

Как сделать постоянную ссылку на нужные строки:

Нажмите на нужный номер строки (например, строку 18), и URL в вашем браузере будет #L18прикреплен к концу. Вы буквально нажимаете на 18левую сторону, а не на строку кода. Выглядит так:

строка 18 выбрана

И теперь URL вашего браузера выглядит так:

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

Если вы хотите выбрать несколько строк, просто нажмите и удерживайте клавишу Shift и щелкните номер второй строки, например, строку 20. Выглядит так:

введите описание изображения здесь

И теперь URL вашего браузера выглядит так:

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

Вот важная часть:

Теперь получите канонический URL для этого конкретного коммита, нажав yклавишу. URL в вашем браузере изменится и станет примерно таким:

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

Эта ссылка содержит фактический хэш SHA для данного конкретного коммита, а не текущую версию файла master. Это означает, что эта ссылка будет работать вечно и не будет указывать на строки 18-20 любой будущей версии этого файла.

Теперь грейтесь в лучах вашей новой постоянной ссылки. ;-)

обновление от 29.09.2017: Как отмечает @watashiSHUN, github теперь облегчает получение постоянной ссылки, предоставляя ...меню слева после выбора одной или нескольких строк. Пожалуйста, ответьте upvote @ watashiSHUN тоже.

GitHub Постоянная ссылка меню

обновление от 25.03.2016: Пример - в приведенном выше примере я ссылался на файл «README» в URL. Эти неканонические URL действительно работали, когда был написан этот ответ. Но теперь эти URL больше не работают, так как READMEбыли перемещены в README.md. Но канонический URL с хешем SHA все еще работает, как и ожидалось.

broc.seib
источник
3
Клавиша y ничего не делает для меня. Это было изменено? Пытаюсь с Google Chrome Dev Channel.
k0pernikus
4
Это все еще работает ... Документы все еще говорят, чтобы использовать yключ тоже ... help.github.com/articles/getting-permanent-links-to-files
broc.seib
2
что Shift + клик по второй строке для блока - это хорошо! Я вручную редактировал URL, чтобы добавить вторую строку :). ответьте на вопрос, что, если я хотел бы выделить строки 2, 4 и 17-22? Это возможно или я могу выделить только один блок за раз?
скука
3
@ tr3buchet Я только что пропинговал поддержку github - сейчас это невозможно. Они сказали, что рассмотрят функцию, но не обещают. Я предложил, чтобы формат был примерно таким L18-L20,L29, и чтобы человек мог CTRLщелкнуть, чтобы добавить непоследовательные строки. Я думаю, что ваша идея является отличным предложением и будет очень полезна.
broc.seib
2
Что если READMEесть README.md?
zwcloud
56

У @ broc.seib есть сложный ответ , я просто хочу отметить, что вместо того, yчтобы нажимать, чтобы получить постоянную ссылку, у github теперь есть очень простой пользовательский интерфейс, который помогает вам достичь этого.

  1. Выберите строку, щелкнув по номеру строки, или выберите несколько строк, нажав вниз shift(так же, как при выборе нескольких папок в проводнике) введите описание изображения здесь

  2. в правом углу первой выбранной строки разверните ...и нажмитеcopy permalink введите описание изображения здесь

  3. вот и все, ссылка с выбранными строками и хэш коммита скопированы в ваш буфер обмена : https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4
watashiSHUN
источник
18

Нажмите на номер строки, а затем скопируйте и вставьте ссылку из адресной строки. Чтобы выбрать диапазон, щелкните по номеру, а затем нажмите Shift, чтобы перейти к следующему номеру.

Кроме того, ссылки представляют собой относительно простой формат, просто добавьте #L<number>в конец для этого конкретного номера строки, используя ссылку на файл. Вот ссылка на третью строку gitрепозитория README:

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

Снимок экрана с выделенной строкой и измененной адресной строкой

Leigh
источник
3
Не забывайте, что если файл изменяется, этот URL будет по-прежнему указывать на строку 3, которая может содержать новый код и может не соответствовать вашему желанию! Я предложил другое решение, которое дает постоянную ссылку. Подсказка: просто нажмите y. ;-)
broc.seib
4
Ссылка не работает
pmrotule
12

постоянная ссылка на фрагмент кода вставляется в поле комментария запроса на извлечение

Вы можете использовать постоянные ссылки для включения фрагментов кода в выпуски, PR и т. Д.

Ссылки:

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

Гаян Виракутти
источник
2
Довольно хороший GIF!
Джованни Бенусси
Извините за не по теме, но какой инструмент вы используете для этого?
Джованни Бенусси
@GiovanniBenussi Это из GitHub. Смотрите ссылку.
Гаян Виракутти
Я имею в виду для GIF :-P хахаха
Джованни Бенусси
1
@GiovanniBenussi Я не знаю, что использовал reversiblean, но иногда я делаю подобные гифки, используя хороший инструмент под названием «screentogif», вы должны попробовать его github.com/NickeManarin/ScreenToGif
SamGamgee
6

Многие редакторы (но также см. Раздел « Команды » ниже) поддерживают привязку к номеру строки или диапазону файла в GitHub или BitBucket (или других). Вот краткий список:

Атом

Открыть на GitHub

Emacs

ГИТ-ссылка

Возвышенный текст

GitLink

напор

gitlink-ВИМ


команды

  • git-link - подкоманда Git для получения ссылки браузера-репозитория на объект git
  • ghwd - открывает URL-адрес github, соответствующий текущей ветке вашей оболочки и рабочему каталогу.
DBagBaggerWithSwagger
источник
0

Связано с тем, как связать README.mdрепозиторий GitHub с определенным номером строки кода

У вас есть три случая:

  1. Мы можем ссылаться на (пользовательский коммит )

    Но ссылка ВСЕГДА будет ссылаться на старую версию файла, которая, например, НЕ содержит новых обновлений в основной ветке. Пример:

    https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
    
  2. Мы можем ссылаться на (пользовательская ветвь ), как (master-ветка). Но ссылка ВСЕГДА будет ссылаться на последнюю версию файла, которая будет содержать новые обновления. Из-за новых обновлений ссылка может указывать на неверный номер бизнес-линии. Пример:

    https://github.com/username/projectname/blob/master/file.txt#L10
    
  3. GitHub НЕ МОЖЕТ делать AUTO-ссылки на какие-либо файлы ни в (пользовательский коммит), ни в (master-branch) из-за следующих бизнес-проблем:

    • смысл бизнес- строки , ссылка на него в новом файле
    • длина целевого выделенного кода, который можно изменить
ahmednabil88
источник
0

Для строки в запросе pull.

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

Это приведет вас к линии, если L и R верны. Я не уверен, есть ли способ посетить L ИЛИ RIe. Если PR добавляет строку, которую вы должны использовать R. Если он удаляет строку, которую вы должны использовать L.

From: Создать URL указателя строки в Github Pull Request

Vaughan
источник