Як пов’язати конкретний номер рядка в github


371

Я знаю, що можу посилання на певний рядок у файлі на рефіні github (я впевнений, що це бачив раніше) ...

Може хтось скаже мені, як це зробити?

Відповіді:


587

Не просто посилання на номери ліній! Обов’язково використовуйте і канонічну URL-адресу . Інакше, коли цей файл буде оновлено, у вас з’явиться URL-адреса, яка вказує на неправильні рядки!

Як зробити постійне посилання на правильні лінії:

Клацніть потрібний номер рядка (наприклад, рядок 18), і URL-адреса у вашому веб-переглядачі буде встановлена #L18в кінці. Ви буквально натискаєте на 18ліворуч, а не рядок коду. Виглядає так:

рядок 18 обраний

А тепер URL вашого браузера виглядає так:

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

Якщо вам потрібно вибрати кілька рядків, просто натисніть клавішу зсуву та натисніть номер другого рядка, наприклад, рядок 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 тепер полегшив отримання постійного посилання, надавши ...меню зліва після вибору одного або декількох рядків. Будь ласка, підкажіть і відповідь @ watashiSHUN .

Постійне меню GitHub

оновлення 25.03.2016: Справа в точці - у наведеному вище прикладі я вказав файл "README" у URL-адресі. Ці неканонічні URL-адреси насправді спрацювали, коли ця відповідь була написана. Але тепер ці URL-адреси більше не працюють, оскільки READMEпереїхали до README.md. Але канонічна URL-адреса з хешем SHA все ще працює, як і очікувалося.


3
Клавіша y для мене нічого не робить. Це змінилося? Спроба на Google Chrome Dev Channel.
k0pernikus

4
Він все ще працює ... Документи все ще кажуть використовувати yключ також ... help.github.com/articles/getting-permanent-links-to-files
broc.seib

2
що зсув + натисніть другий рядок для блоку - це добре! Я вручну редагував 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

18

Клацніть номер рядка, а потім скопіюйте та вставте посилання з адресного рядка. Щоб вибрати діапазон, натисніть на номер, а потім клацніть на пізніший номер.

Крім того, посилання є порівняно простим форматом, просто додайте #L<number>їх до кінця для конкретного номера рядка, використовуючи посилання на файл. Ось посилання на третій рядок gitсховищаREADME :

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

Знімок екрана з виділеною лінією та модифікованим рядком адреси


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. Дивіться посилання.
Gayan Weerakutti

Я маю на увазі для gif :-P hahaha
Giovanni Benussi

1
@GiovanniBenussi Я не знаю, що використовувався реверсивний, але час від часу я роблю подібні файли, використовуючи чудовий інструмент під назвою "curentogif", ви повинні спробувати його github.com/NickeManarin/ScreenToGif
SamGamgee

6

Багато редакторів (але також дивіться розділ Команди нижче) підтримують посилання на номер або діапазон файлу на GitHub або BitBucket (або інших). Ось короткий список:

Атом

Відкрити на GitHub

Emacs

git-посилання

Піднесений текст

GitLink

Вим

gitlink-vim


Команди

  • git-link - підкоманда Git для отримання посилання репо-браузера на об’єкт git
  • ghwd - відкрийте URL-адресу github, яка відповідає поточній гілці та робочому каталогу вашої оболонки

0

Пов’язано із тим, як зв’язатись із README.md репозиторій GitHub до певного номера рядка коду

У вас є три випадки:

  1. Ми можемо зв’язатись (користувацька фіксація )

    Але Link ВИНАГА посилається на стару версію файлу, яка НЕ ​​містить, наприклад, нових оновлень у головній гілці. Приклад:

    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-посилання на будь-який файл ні (користувальницька фіксація), ні (головна філія) Через такі бізнес-проблеми:

    • Значення лінійного бізнесу - посилання на нього в новому файлі
    • довжина цільового виділеного коду, який можна змінити

0

Для рядка в запиті на виклик.

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 OR RIe Якщо PR додає рядок, який потрібно використовувати R. Якщо вона видалить рядок, яку ви повинні використовувати L.

З: Створіть URL-адресу вказівника рядка в запит на отримання Github

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.