1501 Stimmen

GitHub-Relativer Link in Markdown-Datei

Gibt es einen Weg, um einen URL-Anker, , Link von innerhalb einer Markdown-Datei zu einem anderen File im selben Repository und Branch (auch bekannt als ein Link relativ zum aktuellen Branch) zu erstellen?

Zum Beispiel habe ich im master-Branch eine README.md Datei, in der ich gerne etwas Ähnliches wie Folgendes machen würde:

# Mein Projekt
ist wirklich sehr cool. Mein Projekt hat ein Unterverzeichnis namens myLib, siehe unten.

## myLib Dokumentation
siehe Dokumentation [hier](myLib/README.md)

Dies würde es mir ermöglichen, von einer .md-Datei zu einer anderen im selben Branch zu verlinken und mir keine Gedanken darüber zu machen, in welchem Branch ich mich befinde (um einen absoluten URL zu vermeiden, der den github.com Branchnamen enthält).

Hier ist ein funktionierendes Beispiel, was ich meine:

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

Dies ist zu erwarten, weil zu diesem Zeitpunkt die Ausgangs-URL im Branch ist. Wie bekomme ich also den aktuellen Branch in der README.md am Root des Repositories dazu, aufgenommen zu werden?

Aktualisierung: Ich habe ein Problem auf GitHub für diesen Feature-Request eröffnet.

1725voto

VonC Punkte 1117238

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

GitHub Blogbeitrag Relative Links in Markup-Dateien:

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

Sie möchten Beispiele für Linkdefinitionen und wie sie funktionieren? Hier ist etwas Markdown für Sie.
Anstelle eines absoluten Links:

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

…können Sie einen relativen Link verwenden:

[ein relativer Link](other_file.md)
[ein relativer Link](path%20with%20spaces/other_file.md)

und wir stellen sicher, dass er mit user/repo/blob/branch/other_file.md verlinkt wird.

Wenn Sie bisher eine Workaround-Formulierung wie [ein Workaround-Link](repo/blob/master/other_file.md) verwendet haben, müssen Sie Ihre Dokumentation aktualisieren, um die neue Syntax zu verwenden.

Dies bedeutet auch, dass Ihre Dokumentation jetzt problemlos alleine stehen kann, ohne immer auf GitHub zu verweisen.

Marcono1234 fügt in den Kommentaren hinzu

Auch nützlich: Wenn der Link mit einem / beginnt, ist er relativ zum Stammverzeichnis des Repositorys (unabhängig davon, ob die Markdown-Datei in Unterverzeichnissen verschachtelt ist)


Aktualisierung 20. Dezember 2011:

Das GitHub Markup-Problem 84 ist derzeit von technoweenie geschlossen, mit dem Kommentar:

Wir haben versucht, ein -Tag dafür hinzuzufügen, aber das verursacht Probleme mit anderen relativen Links auf der Website.


12. Oktober 2011:

Wenn Sie sich den rohen Quelltext der README.md von Markdown selbst ansehen, werden relative Pfade anscheinend nicht unterstützt.
Sie finden Verweise 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

Wie in der Antwort von InvisibleWolf bemerkt wird, muss, wenn der Ziel-Link ein Verzeichnis ist und Leerzeichen enthält, für jedes Leerzeichen %20 verwendet werden.

189voto

mathsyouth Punkte 3062

Zum Beispiel haben Sie ein Repository wie folgt:

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

Der relative Link zu subtext.md in text.md könnte so aussehen:

[diesen Subtext](subpro/subtext.md)

Der relative Link zu subsubtext.md in text.md könnte so aussehen:

[diesen Subsubtext](subpro/subsubpro/subsubtext.md)

Der relative Link zu subtext.md in subsubtext.md könnte so aussehen:

[diesen Subtext](../subtext.md)

Der relative Link zu subsubtext2.md in subsubtext.md könnte so aussehen:

[diesen Subsubtext2](../subsubpro2/subsubtext2.md)

Der relative Link zu text.md in subsubtext.md könnte so aussehen:

[dieses Text](../../text.md)

42voto

Alan Viars Punkte 2842

GitHub könnte dies mit minimalem Aufwand wesentlich verbessern. Hier ist ein Workaround.

Ich denke, du möchtest eher etwas wie

[Dein Titel](dein-projekt-name/tree/master/dein-unterordner)

oder um auf das README selbst zu verweisen

[README](dein-projekt-name/blob/master/dein-unterordner/README.md)

30voto

Gajus Punkte 61796

Ab dem 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 diskutiert wurden.

Alternativ können Sie Gitdown verwenden, um volle URLs zum Repository zu erstellen und sie sogar branch-aware zu machen, z.B.

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

Gitdown ist ein GitHub Markdown-Präprozessor. Es erleichtert gängige Aufgaben im Zusammenhang mit der Pflege einer Dokumentationsseite für ein GitHub-Repository, z.B. die Erstellung einer Inhaltsübersicht, das Einbeziehen von Variablen, das Generieren von URLs und das Abrufen von Informationen über das Repository selbst zum Zeitpunkt der Verarbeitung der Eingabe. Gitdown integriert nahtlos mit Ihren Build-Skripten.

Ich bin der Autor der Gitdown-Bibliothek.

18voto

InvisibleWolf Punkte 787

Ich wollte das hinzufügen, weil keines der obigen Lösungen funktioniert hat, wenn der Ziellink ein Verzeichnis mit Leerzeichen im Namen ist. Wenn der Ziellink ein Verzeichnis ist und Leerzeichen enthält, rendert selbst das Escapen von Leerzeichen mit \ den Link auf Github nicht. Die einzige Lösung, die für mich funktioniert hat, ist für jedes Leerzeichen %20 zu verwenden.

zum Beispiel: Wenn die Verzeichnisstruktur diese ist

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

Um einen Link zu Dir A in README.md im Verzeichnis Top_dir zu erstellen, können Sie dies tun:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X