GitHub relativer Link in der Markdown-Datei


831

Gibt es eine Möglichkeit, einen URL-Anker zu erstellen <a>, der aus einer Markdown-Datei mit einer anderen Datei innerhalb desselben Repositorys und Zweigs verknüpft ist (auch bekannt als Link relativ zum aktuellen Zweig)?

Zum Beispiel habe ich im Hauptzweig eine README.md-Datei, die ich gerne machen würde wie:

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

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

Auf diese Weise kann ich innerhalb desselben Zweigs einen Link von einem .md zu einem anderen erstellen und muss mir keine Gedanken darüber machen, in welchem ​​Zweig ich mich befinde (ich muss keine absolute URL erstellen, die den Namen des Zweigs github.com enthält).

Hier ist ein funktionierendes Beispiel dafür, was ich meine:

  1. GOTO http://github.com/rynop/testRel , Link funktioniert nicht.
  2. GOTO http://github.com/rynop/testRel/blob/master/README.md , Link funktioniert.

Dies wird erwartet, da sich zu diesem Zeitpunkt die Start-URL in der Verzweigung befindet. Wie kann ich nun den aktuellen Zweig in der Datei README.md im Stammverzeichnis des Repositorys abrufen?

Update : Ich habe ein Problem mit GitHub für diese Funktionsanforderung geöffnet .


21
Endlich : Relative Links werden jetzt unterstützt! Ich habe meine Antwort aktualisiert :)
VonC

Dies sind alles gute Informationen, wenn Sie versuchen, eine andere .md-Datei zu öffnen oder zu einer anderen Web-http / s- oder HTML-Seite oder sogar zu .jpg-, .png- oder JPEG-Seiten zu wechseln. Aber wie können Sie Markdown dazu bringen, eine .pdf-Datei zu öffnen? Ich kann die Syntax nicht richtig einstellen, damit meine PDF-Datei geöffnet wird, die sich im selben Verzeichnis wie die MDD-Datei befindet. Kann jemand helfen, ein PDF zu öffnen?
Elton

Sie können einige Lösungen in dieser Frage finden: stackoverflow.com/questions/40422790/…
Oleg Pro

Antworten:


970

Update 30. Januar 2013 , 16 Monate später:

GitHub Blog Post Relative Links in Markup-Dateien :

Ab heute unterstützt GitHub relative Links in Markup-Dateien .
Jetzt können Sie direkt zwischen verschiedenen Dokumentationsdateien verknüpfen, unabhängig davon, ob Sie die Dokumentation auf GitHub selbst oder lokal mit einem anderen Markup-Renderer anzeigen.

Sie möchten Beispiele für Linkdefinitionen und deren Funktionsweise? Hier ist ein Markdown für Sie.
Anstelle eines absoluten Links:

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

… Sie können einen relativen Link verwenden:

[a relative link](other_file.md)

und wir werden sicherstellen, dass es verknüpft wird user/repo/blob/branch/other_file.md.

Wenn Sie eine Problemumgehung wie verwendet haben [a workaround link](repo/blob/master/other_file.md), müssen Sie Ihre Dokumentation aktualisieren, um die neue Syntax zu verwenden.

Dies bedeutet auch, dass Ihre Dokumentation jetzt problemlos für sich allein stehen kann, ohne immer auf GitHub zu verweisen .


Update 20. Dezember 2011:

Die GitHub-Markup-Ausgabe 84 wird derzeit von technoweenie mit dem Kommentar geschlossen:

Wir haben versucht, ein <base>Tag dafür hinzuzufügen , aber es verursacht Probleme mit anderen relativen Links auf der Site.


12. Oktober 2011:

Wenn Sie sich die RohquelleREADME.md von Markdown selbst (!) Betrachten, scheinen relative Pfade nicht unterstützt zu werden.
Sie finden Referenzen wie:

[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
Hmm .. Ich kann eine relative URL erstellen (versuchen Sie [link] someDir / README.md, es wird ein Anker erstellt) - aber ich möchte einen relativen Link, der den Github-Zweig kennt, wie: myRepo / tree / <$ curBranch> /pathToMd.md . Ich werde wahrscheinlich nur eine Feature-Anfrage mit github.com
öffnen

1
Nee. Das vollständige Beispiel finden Sie hier github.com/rynop/testRel . Ich könnte einen relativen Link erstellen, der den Zweig angibt, aber das macht den Zweck dessen, was ich überhaupt versuche, zunichte. Wenn ich von einem .md in einem Unterverzeichnis zu einem anderen verlinken würde, würde es meiner Meinung nach gut mit relativen Links umgehen. Problem tritt auf, wenn von .md im Stammverzeichnis des Repos verlinkt wird.
Rynop

2
Verwandte: Zum Verknüpfen von einer Wiki-Seite zu einer anderen [Welcome](./wiki/Hello)funktioniert, wobei Hello eine andere Wiki-Seite im selben Repo ist.
Wayne Bloss

1
@wizlb Ich habe es gerade ohne den Pfad versucht und es funktioniert auch, [Welcome](Hello)wenn Hello eine andere Wiki-Seite im selben Repo ist.
Mottie

2
Dies funktioniert auf normalen Wiki-Seiten. Wenn Sie jedoch eine _Sidebar.md-Datei hinzufügen, gibt es einen Unterschied zwischen der Auflösung der Links auf der Wiki-Startseite und den übrigen Seiten. Ich habe hier alles ohne Glück versucht. Das einzige, was ich mir bisher ausgedacht habe, ist, zwei verschiedene _Sidebar.md-Dateien zu verwenden und die Dateien in Unterverzeichnissen zu organisieren.
NightOwl888

93

Zum Beispiel haben Sie ein Repo wie das folgende:

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

Der relative Link zu subtext.mdin text.mdkönnte folgendermaßen aussehen:

[this subtext](subpro/subtext.md)

Der relative Link zu subsubtext.mdin text.mdkönnte folgendermaßen aussehen:

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

Der relative Link zu subtext.mdin subsubtext.mdkönnte folgendermaßen aussehen:

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

Der relative Link zu subsubtext2.mdin subsubtext.mdkönnte folgendermaßen aussehen:

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

Der relative Link zu text.mdin subsubtext.mdkönnte folgendermaßen aussehen:

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

1
Eine Sache, die ich gefunden habe, die Links unterscheiden zwischen Groß- und Kleinschreibung, was ich nicht erwartet hatte.
Andy Wiesendanger

Was ist, wenn in meinen Verzeichnissen Leerzeichen vorhanden sind?
Rishav

16

Zum 31. Januar 2013 unterstützt Github Markdown relative Links zu Dateien .

[a relative link](markdown_file.md)

Es gibt jedoch einige Mängel, die in diesem Kommentarthread erörtert wurden .

Alternativ können Sie Gitdown verwenden , um vollständige URLs zum Repository zu erstellen und diese sogar verzweigungsbewusst zu machen, z

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

Gitdown ist ein GitHub-Markdown-Präprozessor. Es optimiert allgemeine Aufgaben im Zusammenhang mit der Verwaltung einer Dokumentationsseite für ein GitHub-Repository, z. B. das Generieren von Inhaltsverzeichnissen, einschließlich Variablen, das Generieren von URLs und das Abrufen von Informationen über das Repository selbst zum Zeitpunkt der Verarbeitung der Eingabe. Gitdown lässt sich nahtlos in Ihre Build-Skripte integrieren.

Ich bin der Autor der Gitdown-Bibliothek.


1
@Thomas Ist dies Teil der Nutzungsbedingungen für den Stapelüberlauf? Wenn ja, teilen Sie bitte einen Link. Ich bin gespannt auf die Motivation hinter einer solchen Anforderung.
Gajus

5
"Veröffentlichen Sie gute, relevante Antworten, und wenn sich einige (aber nicht alle) auf Ihr Produkt oder Ihre Website beziehen, ist das in Ordnung. Sie müssen jedoch Ihre Zugehörigkeit in Ihren Antworten offenlegen." stackoverflow.com/help/behavior
Thomas

1
Man könnte meinen, dies fällt unter die Metainformationen, die Stack Overflow so sehr zu vermeiden versucht, dh die eine Diskussion außerhalb des Themas fördern.
Gajus

14

GitHub könnte dies mit minimalem Aufwand viel besser machen. Hier ist eine Umgehung.

Ich denke du willst so etwas mehr

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

oder um auf die README selbst zu verweisen

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

Viel Glück


3
Ja, das ist was ich heute mache. Ich möchte die Filialinformationen nicht in den Link einbinden. Es sollte relativ sein.
Rynop

8

Ich wollte dies nur hinzufügen, da keine der oben genannten Lösungen funktioniert, wenn der Ziellink ein Verzeichnis mit Leerzeichen im Namen ist. Wenn der Ziellink ein Verzeichnis ist und Speicherplatz hat, wird der Link auf Github nicht gerendert, selbst wenn der Speicherplatz mit \ leer ist. Die einzige Lösung, die für mich funktioniert hat, ist die Verwendung%20 für jeden Raum.

zB: wenn dies die Verzeichnisstruktur ist

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

Um einen Link zu Dir Ain README.md in zu erstellen Top_dir, können Sie Folgendes tun:

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

8

Sie können eine Verknüpfung zu einer Datei herstellen, jedoch nicht zu Ordnern. Beachten Sie jedoch, dass Github diese /blob/master/vor Ihrer relativen Verknüpfung hinzufügt (und Ordnern fehlt dieser Teil, sodass sie weder mit HTML verknüpft werden können<a> Tags noch mit Markdown-Link verknüpft werden können).

Wenn wir also eine Datei haben myrepo/src/Test.java, hat sie eine URL wie:

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

Und um es in der Readme-Datei zu verknüpfen, können wir verwenden:

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

oder: <a href="src/Test.java">This is a link</a> .

(Ich denke, masterstellt den masterZweig dar und es unterscheidet sich, wenn sich die Datei in einem anderen Zweig befindet.)


7

Sie können relative URLs aus dem Stammverzeichnis Ihres Repos mit verwenden <a href="">. Angenommen, Ihr Repo heißt testRel, geben Sie Folgendes ein 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
Dies ist keine gültige MD-Syntax
Astroanu

6

Diese Frage ist ziemlich alt, aber sie scheint immer noch wichtig zu sein, da es nicht einfach ist, relative Verweise von readme.md auf Wiki-Seiten auf Github zu setzen.

Ich habe ein bisschen herumgespielt und dieser relative Link scheint ziemlich gut zu funktionieren:

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

Die beiden ../entfernen /blob/master/und verwenden Ihre Basis als Ausgangspunkt. Ich habe dies jedoch nicht in anderen Repositorys als Github versucht (möglicherweise gibt es Kompatibilitätsprobleme).


4

Ich bin mir nicht sicher, ob ich diese Option hier sehe. Sie können einfach ein /folderin Ihrem Repository erstellen und es direkt verwenden:

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

Es wird kein Blob, Baum oder Repository-Name benötigt und es funktioniert wie ein Zauber.


1
Sie würden denken, das wäre der offensichtliche Weg, aber es funktioniert nicht für mich.
Kmeixner

4

Wenn Sie einen relativen Link zu Ihrer Wiki-Seite auf GitHub wünschen, verwenden Sie Folgendes:

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

Wenn Sie einen Link zu einer Datei im Repository wünschen, um auf eine Header-Datei zu verweisen, und die Wiki-Seite sich im Stammverzeichnis des Wikis befindet, verwenden Sie Folgendes:

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

Der Grund für den letzten besteht darin, den Pfad "/ wiki" mit "../" zu überspringen und zum Hauptzweig im Repository-Baum zu wechseln, ohne den Repository-Namen anzugeben, der sich in Zukunft möglicherweise ändern wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.