Відносне посилання GitHub у файлі Markdown


831

Чи є спосіб створити прив’язку URL-адреси <a>, посилання з файлу Markdown, на інший файл у тому ж сховищі та відділенні (він же посилання відносно поточної гілки)?

Наприклад, у головній гілці у мене є файл README.md, з яким я хотів би зробити щось на кшталт:

# My Project
is really really cool. My Project has a subdir named myLib, see below.

## myLib documentation
see documentation [here](myLib/README.md)

Це дозволить мені зв’язатися з однієї.

Ось робочий приклад того, що я маю на увазі:

  1. GOTO http://github.com/rynop/testRel , посилання не працює.
  2. GOTO http://github.com/rynop/testRel/blob/master/README.md , посилання працює.

Це очікується, оскільки в цей момент початкова URL-адреса знаходиться у відділенні. Тепер, як змусити його взяти поточну гілку в README.md у корені сховища?

Оновлення : я відкрив проблему проти GitHub для цього запиту функції.


21
Нарешті : тепер підтримуються відносні посилання! Я оновив свою відповідь :)
VonC

Це вся корисна інформація, якщо ви намагаєтесь відкрити інший .md або перейти на інший веб-сторінки http / s або html або навіть .jpg, .png або jpeg, але як зробити так, щоб Markdown відкрив .pdf? Я не можу правильно встановити синтаксис, щоб він відкрив свій .pdf, який знаходиться в тому ж каталозі, що і файл .md. Чи може хтось допомогти відкрити .pdf?
Елтон

Ви можете знайти рішення у цьому питанні: stackoverflow.com/questions/40422790/…
Олег Про

Відповіді:


970

Оновлення 30 січня 2013 року через 16 місяців:

GitHub Blog Post Відносні посилання у файлах розмітки :

Починаючи з сьогоднішнього дня, GitHub підтримує відносні посилання у файлах розмітки .
Тепер ви можете зв’язати безпосередньо між різними файлами документації, чи переглядаєте ви документацію на самому GitHub, чи локально, використовуючи інший розмітчик розмітки.

Ви хочете приклади визначень посилань і як вони працюють? Ось кілька відміток для вас.
Замість абсолютного посилання:

[a link](https://github.com/user/repo/blob/branch/other_file.md)

… Ви можете використовувати відносне посилання:

[a relative link](other_file.md)

і ми переконаємось, що вона пов’язана user/repo/blob/branch/other_file.md.

Якщо ви використовували подібне вирішення [a workaround link](repo/blob/master/other_file.md), вам доведеться оновити свою документацію, щоб використовувати новий синтаксис.

Це також означає, що ваша документація тепер може самостійно стояти самостійно, не завжди вказуючи на GitHub .


Оновлення 20 грудня 2011 року:

Випуск розмітки GitHub 84 наразі закритий технологією , з коментарем:

Ми намагалися додати <base>тег для цього, але це спричиняє проблеми з іншими відносними посиланнями на сайті.


12 жовтня 2011 року:

Якщо ви подивитесь на вихідне джерело самогоREADME.md Markdown (!), Відносні шляхи, здається, не підтримуються.
Ви знайдете посилання на кшталт:

[r2h]: http://github.com/github/markup/tree/master/lib/github/commands/rest2html
[r2hc]: http://github.com/github/markup/tree/master/lib/github/markups.rb#L13

1
Хм .. Я можу зробити відносну URL-адресу (спробуйте [посилання] someDir / README.md, вона зробить якір) - але я хочу, щоб гілка github знала відносне посилання типу: myRepo / tree / <$ curBranch> /pathToMd.md . Мабуть, я просто відкрию запит на функцію з github.com
rynop

1
ніпе. Дивіться повний приклад тут github.com/rynop/testRel . Я міг би зробити відносне посилання із зазначенням галузі, але це перемагає мету того, що я намагаюся зробити в першу чергу. Якщо я посилався з .md в одному піддіректорі на інший, я думаю, що це відносно посилання обробляло б добре. Проблема виникає при посиланні з .md в корінь репо.
rynop

2
Пов’язано: Для посилання з однієї сторінки вікі на іншу, [Welcome](./wiki/Hello)працює, де Hello - ще одна сторінка вікі в тому ж репо.
Уейн Блос

1
@wizlb Я просто спробував це без шляху, і він працює також [Welcome](Hello)там, де Hello - ще одна сторінка вікі в тому ж репо.
Мотті

2
Це працює на звичайних сторінках вікі, але якщо ви додасте файл _Sidebar.md, між способом розв’язання посилань на домашній сторінці вікі є різниця, ніж на інших сторінках. Я спробував усе тут без везіння. Єдине, що я придумав поки що - це використовувати два різні файли _Sidebar.md та впорядкувати файли в підкаталогах.
NightOwl888

93

Наприклад, у вас є такий репо, як наступний:

project/
    text.md
    subpro/
       subtext.md
       subsubpro/
           subsubtext.md
       subsubpro2/
           subsubtext2.md

Відносна посилання на subtext.mdв text.mdможе виглядати приблизно так:

[this subtext](subpro/subtext.md)

Відносна посилання на subsubtext.mdв text.mdможе виглядати приблизно так:

[this subsubtext](subpro/subsubpro/subsubtext.md)

Відносна посилання на subtext.mdв subsubtext.mdможе виглядати приблизно так:

[this subtext](../subtext.md)

Відносна посилання на subsubtext2.mdв subsubtext.mdможе виглядати приблизно так:

[this subsubtext2](../subsubpro2/subsubtext2.md)

Відносна посилання на text.mdв subsubtext.mdможе виглядати приблизно так:

[this text](../../text.md)

1
Я знайшов одне - посилання залежать від регістру, чого я не очікував.
Енді Візендангер

Що робити, якщо в моїх каталогах є пробіли?
Ришав

16

Станом на 31 січня 2013 року розмітка Github підтримує відносні посилання на файли .

[a relative link](markdown_file.md)

Однак у цій темі коментарів було обговорено декілька недоліків .

Як альтернативу, ви можете використовувати Gitdown для побудови повних URL-адрес у сховищі і навіть зробити їх відомими , наприклад,

{"gitdown": "gitinfo", "name": "url"} // https://github.com/gajus/gitdown
{"gitdown": "gitinfo", "name": "branch"} // master

Gitdown - препроцесор розмітки GitHub. Він упорядковує загальні завдання, пов’язані із підтримкою сторінки документації для сховища GitHub, наприклад, генерування вмісту, включаючи змінні, генерування URL-адрес та отримання інформації про сам сховище під час обробки вводу. Gitdown легко інтегрується зі своїми сценаріями будівництва.

Я автор бібліотеки Gitdown.


1
@Thomas Це частина умов переповнення стека? Якщо так, будь ласка, поділіться посиланням. Мені цікаво знати мотивацію такої вимоги.
Гаджус

5
"Опублікуйте хороші відповідні відповіді, і якщо деякі (але не всі) трапляються щодо вашого продукту чи веб-сайту, це нормально. Однак ви повинні розкрити свою приналежність у своїх відповідях." stackoverflow.com/help/behavior
Томас

1
Можна подумати, що це підпадає під мета-інформацію, яку Stack Overflow намагається так уникнути, тобто це сприяє дискусії поза темою.
Гаджус

14

GitHub міг би зробити це набагато краще за мінімальну роботу. Ось обхід.

Я думаю, ти хочеш чогось більшого

[Your Title](your-project-name/tree/master/your-subfolder)

або вказувати на саму ЧИТАТИ

[README](your-project-name/blob/master/your-subfolder/README.md)

Щасти


3
Так, це я роблю сьогодні. Я не хочу вказувати інформацію про галузь у посилання. Він повинен бути відносним.
rynop

8

Просто хотів додати це, тому що жодне з перерахованих вище рішень не працювало, якщо цільове посилання - це каталог з пробілами в його імені. Якщо цільове посилання - це каталог, і в ньому є простір, то навіть пробіл у просторі з \ не надає посилання на Github. %20Для кожного простору використовується лише розроблене для мене рішення .

наприклад: якщо така структура каталогів

Top_dir
|-----README.md
|-----Cur_dir1
      |----Dir A
           |----README.md
      |----Dir B
           |----README.md

Щоб зробити посилання на Dir AREADME.md, присутнє у Top_dirвас, ви можете зробити це:

[Dir 1](Cur_dir1/Dir%20A)

8

Ви можете посилатися на файл, але не на папки, і майте на увазі, що Github додасть /blob/master/до вашого відносного посилання (а папки бракують цієї частини, щоб вони не могли бути пов’язані, ні з <a>тегами HTML, ні з посиланням Markdown).

Отже, якщо у нас є файл myrepo/src/Test.java, він матиме URL-адресу:

https://github.com/WesternGun/myrepo/blob/master/src/Test.java

І щоб зв’язати його з файлом readme, ми можемо використовувати:

[This is a link](src/Test.java)

або: <a href="src/Test.java">This is a link</a>.

(Я думаю, що masterпредставляє masterгілку, і вона відрізняється, коли файл знаходиться в іншій гілці.)


7

Ви можете використовувати відносні URL-адреси з кореня репортажу <a href="">. Припускаючи, що ваше репо названо testRel, введіть таке testRel/README.md:

# My Project
is really really cool. My Project has a subdir named myLib, see below.

## myLib docs
see documentation:
    * <a href="testRel/myLib">myLib/</a>
    * <a href="testRel/myLib/README.md">myLib/README.md</a>

3
це не дійсний синтаксис md
astroanu

6

Це питання досить старе, але все ще здається важливим, оскільки не просто розмістити відносні посилання з readme.md на сторінки вікі на Github.

Я трохи розігрувався, і цей відносний зв’язок, здається, працює досить добре:

[Your wiki page](../../wiki/your-wiki-page)

Вони ../видалять /blob/master/та використовуватимуть вашу базу як вихідну точку. Я не пробував цього в інших сховищах, окрім Github (можуть бути проблеми сумісності).


4

Я не впевнений, чи бачу тут цей варіант. Ви можете просто створити /folderу своєму сховищі та безпосередньо використовувати його:

[a relative link](/folder/myrelativefile.md)

Ні крапка, ні дерево або назва сховища не потрібні, і це працює як шарм.


1
Ви можете подумати, що це був би очевидний спосіб, але це не працює для мене.
Кмейкснер

4

Якщо ви хочете відносне посилання на вашу сторінку вікі на GitHub, скористайтеся цим:

Read here: [Some other wiki page](path/to/some-other-wiki-page)

Якщо ви хочете посилання на файл у сховищі, скажімо, для посилання на якийсь файл заголовка, а сторінка вікі знаходиться в корені вікі, скористайтеся цим:

Read here: [myheader.h](../tree/master/path/to/myheader.h)

Обґрунтуванням останнього є пропуск шляху "/ wiki" з "../" та перехід до головного відділення в дереві репозиторію, не вказуючи назву сховища, що може змінитися в майбутньому.

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