Question Lien relatif GitHub dans le fichier Markdown


Existe-t-il un moyen de créer une ancre d'URL, <a>, lien depuis un fichier Markdown vers un autre fichier dans le même référentiel et la même branche (un lien par rapport à la branche actuelle)?

Par exemple, dans la branche principale, j'ai un fichier README.md, que je voudrais faire quelque chose comme:

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

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

Cela me permettrait de lier d'un .md à un autre dans la même branche et de ne pas avoir à me soucier de la branche dans laquelle je suis (évitez d'avoir à faire une URL absolue qui inclut le nom de la branche github.com).

Voici un exemple pratique de ce que je veux dire:

  1. ALLER À http://github.com/rynop/testRel, le lien ne fonctionne pas.
  2. ALLER À http://github.com/rynop/testRel/blob/master/README.md, le lien fonctionne.

Ceci est attendu car à ce stade l'URL de départ est dans la branche. Maintenant, comment puis-je obtenir pour ramasser la branche actuelle dans le fichier README.md à la racine du référentiel?

Mettre à jour: J'ai ouvert un problème contre GitHub pour cette demande de fonctionnalité.


541
2017-10-04 20:12


origine


Réponses:


Mettre à jour 30 janvier 2013, 16 mois plus tard:

GitHub Blog Post Liens relatifs dans les fichiers de marquage:

À partir d'aujourd'hui, GitHub prend en charge les liens relatifs dans les fichiers de balisage.
  Vous pouvez maintenant vous lier directement entre différents fichiers de documentation, que vous visualisiez la documentation sur GitHub lui-même, ou localement, en utilisant un autre moteur de rendu de balisage.

Vous voulez des exemples de définitions de liens et comment ils fonctionnent? Voici quelques Markdown pour vous.
  Au lieu d'un lien absolu:

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

... vous pouvez utiliser un lien relatif:

[a relative link](other_file.md)

et nous nous assurons qu'il est lié à user/repo/blob/branch/other_file.md.

Si vous utilisiez une solution de contournement comme [a workaround link](repo/blob/master/other_file.md), vous devrez mettre à jour votre documentation pour utiliser la nouvelle syntaxe.

Cela signifie également votre documentation peut maintenant facilement se débrouiller seule, sans toujours pointer vers GitHub.


Mise à jour le 20 décembre 2011:

le Problème de balisage GitHub 84 est actuellement fermé par technoweenie, avec le commentaire:

Nous avons essayé d'ajouter un <base> tag pour cela, mais cela provoque des problèmes avec d'autres liens relatifs sur le site.


12 octobre 2011:

Si vous regardez le source brute de la README.md de Markdown lui-même (!), les chemins relatifs ne semblent pas être pris en charge.
Vous trouverez des références comme:

[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

641
2017-10-05 08:39



Par exemple, vous avez un repo comme celui-ci:

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

Le lien relatif à subtext.md dans text.md pourrait ressembler à ceci:

[this subtext](subpro/subtext.md)

Le lien relatif à subsubtext.md dans text.md pourrait ressembler à ceci:

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

Le lien relatif à subtext.md dans subsubtext.md pourrait ressembler à ceci:

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

Le lien relatif à subsubtext2.md dans subsubtext.md pourrait ressembler à ceci:

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

Le lien relatif à text.md dans subsubtext.md pourrait ressembler à ceci:

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

31
2018-03-27 09:38



GitHub pourrait faire beaucoup mieux avec un minimum de travail. Voici une solution de rechange.

Je pense que tu veux quelque chose de plus

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

ou pour pointer vers le fichier README lui-même

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

Bonne chance


8
2017-08-31 16:16



Au 31 janvier 2013, la démarque Github prend en charge les liens relatifs aux fichiers.

[a relative link](markdown_file.md)

Cependant, il y a quelques lacunes qui ont été discuté dans ce fil de commentaires.

Comme alternative, vous pouvez utiliser Gitdown construire URL complètes du référentielet même leur faire prendre conscience de la branche, par ex.

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

Gitdown est un préprocesseur de démarquage GitHub. Il rationalise les tâches courantes associées à la gestion d'une page de documentation pour un référentiel GitHub, par ex. générer une table des matières, y compris des variables, générer des URL et obtenir des informations sur le référentiel lui-même au moment du traitement de l'entrée. Gitdown s'intègre parfaitement avec vos scripts de construction.

Je suis l'auteur de la bibliothèque Gitdown.


8
2017-11-22 17:27



Vous pouvez utiliser les URL relatives de la racine de votre repo avec <a href="">. En supposant que votre repo est nommé testRel, mettez ce qui suit dans 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>

4
2017-08-16 18:37



Cette question est assez ancienne, mais elle semble toujours importante, car il n'est pas facile de mettre des références relatives de readme.md aux pages wiki sur Github.

J'ai joué un petit peu et ce lien relatif semble fonctionner plutôt bien:

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

Les deux ../ va supprimer /blob/master/ et utilisez votre base comme point de départ. Je n'ai pas essayé ceci sur d'autres dépôts que Github, cependant (il peut y avoir des problèmes de compatibilité).


3
2018-02-17 19:38



Je ne suis pas sûr si je vois cette option ici. Vous pouvez simplement créer un /folder dans votre référentiel et utilisez-le directement:

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

Aucun nom de blob ou d'arborescence ou de référentiel n'est requis, et cela fonctionne comme un charme.


2
2017-10-22 04:01



Je voulais juste ajouter cela parce qu'aucune des solutions ci-dessus n'a fonctionné si le lien cible est un répertoire avec des espaces dans son nom. Si le lien cible est un répertoire et qu'il a de l'espace, même l'échappement de l'espace avec \ ne rend pas le lien sur Github. Seule la solution a fonctionné pour moi utilise %20 pour chaque espace.

par exemple: si la structure du répertoire est cette

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

Pour faire un lien vers Dir A dans README.md présent dans Top_dir tu peux le faire:

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

2
2017-09-13 05:46



Vous pouvez lier au fichier, mais pas aux dossiers, et gardez à l'esprit que, Github va ajouter /blob/master/ avant votre lien relatif (et les dossiers n'ont pas cette partie afin qu'ils ne peuvent pas être liés, ni avec HTML <a> tags ou lien Markdown).

Donc, si nous avons un fichier dans myrepo/src/Test.java, il aura une URL comme:

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

Et pour le lier dans le fichier readme, nous pouvons utiliser:

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

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

(J'imagine, master représente le master branche et il diffère lorsque le fichier est dans une autre branche.)


2
2018-05-19 16:58



Si vous voulez un lien relatif à votre page wiki sur GitHub, utilisez ceci:

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

Si vous voulez un lien vers un fichier dans le dépôt, disons, pour référencer un fichier d'entête, et que la page wiki soit à la racine du wiki, utilisez ceci:

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

La raison de la dernière est de sauter le chemin "/ wiki" avec "../", et d'aller à la branche principale dans l'arborescence du référentiel sans spécifier le nom du référentiel, qui pourrait changer dans le futur.


1
2018-01-05 17:40