Link relativo a GitHub nel file Markdown


831

Esiste un modo per creare un ancoraggio URL <a>, collegamento dall'interno di un file Markdown, a un altro file all'interno dello stesso repository e ramo (ovvero un collegamento relativo al ramo corrente)?

Ad esempio, nel ramo master ho un file README.md, che vorrei fare qualcosa del tipo:

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

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

Ciò mi consentirebbe di collegarmi da un .md all'altro all'interno dello stesso ramo e non dovrei preoccuparmi di quale ramo mi trovo (evitare di dover fare un URL assoluto che includa il nome del ramo github.com).

Ecco un esempio funzionante di cosa intendo:

  1. GOTO http://github.com/rynop/testRel , il collegamento non funziona.
  2. GOTO http://github.com/rynop/testRel/blob/master/README.md , collegamento funziona.

Ciò è previsto perché a questo punto l'URL iniziale si trova nel ramo. Ora come ottengo che raccolga il ramo corrente in README.md alla radice del repository?

Aggiornamento : ho aperto un problema con GitHub per questa richiesta di funzionalità.


21
Infine : i relativi collegamenti sono ora supportati! Ho aggiornato la mia risposta :)
VonC

Queste sono tutte buone informazioni se stai provando ad aprire un altro .md o vai su un altro sito Web http / s o html o persino .jpg, .png o jpeg, ma come fai a fare in modo che Markdown apra un .pdf? Non riesco a ottenere la sintassi corretta per averlo aperto il mio .pdf che si trova nella stessa directory del file .md. Qualcuno può aiutare ad aprire un .pdf?
Elton,

Puoi trovare alcune soluzioni in questa domanda: stackoverflow.com/questions/40422790/…
Oleg Pro

Risposte:


970

Aggiornamento 30 gennaio 2013 , 16 mesi dopo:

Post sul blog di GitHub Link relativi nei file di markup :

A partire da oggi, GitHub supporta collegamenti relativi nei file di markup .
Ora puoi collegare direttamente tra diversi file di documentazione, sia che tu visualizzi la documentazione su GitHub stesso, sia localmente, usando un renderer di markup diverso.

Desideri esempi di definizioni di link e come funzionano? Ecco alcuni Markdown per te.
Invece di un collegamento assoluto:

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

... puoi usare un link relativo:

[a relative link](other_file.md)

e faremo in modo che sia collegato user/repo/blob/branch/other_file.md.

Se si utilizzava una soluzione alternativa come [a workaround link](repo/blob/master/other_file.md), è necessario aggiornare la documentazione per utilizzare la nuova sintassi.

Questo significa anche che la tua documentazione ora può essere facilmente autonoma, senza indicare sempre GitHub .


Aggiornamento del 20 dicembre 2011:

Il numero di markup GitHub 84 è attualmente chiuso da technoweenie , con il commento:

Abbiamo provato ad aggiungere un <base>tag per questo, ma causa problemi con altri collegamenti relativi sul sito.


12 ottobre 2011:

Se osservi la fonte nonREADME.md elaborata di Markdown stesso (!), I percorsi relativi non sembrano essere supportati.
Troverai riferimenti come:

[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 .. Posso creare un URL relativo (provare [link] someDir / README.md, farà un ancoraggio) - ma voglio un collegamento relativo consapevole di un ramo github come: myRepo / tree / <$ curBranch> /pathToMd.md . Probabilmente aprirò una richiesta di funzionalità con github.com
rynop il

1
no. Vedi l'esempio completo qui github.com/rynop/testRel . Potrei fare un collegamento relativo specificando il ramo, ma questo sconfigge lo scopo di quello che sto cercando di fare in primo luogo. Se stavo collegando da un .md in un sottodiretto a un altro, penso che gestirà il collegamento relativo bene. Il problema si verifica quando si collega da .md nella radice del repository.
rynop,

2
Correlati: per il collegamento da una pagina wiki a un'altra, [Welcome](./wiki/Hello)funziona, dove Hello è un'altra pagina wiki nello stesso repository.
Wayne Bloss,

1
@wizlb L'ho appena provato senza il percorso e funziona anche [Welcome](Hello)dove Hello è un'altra pagina wiki nello stesso repository.
Mottie,

2
Funziona nelle normali pagine wiki, ma se aggiungi un file _Sidebar.md c'è una differenza tra il modo in cui i collegamenti si risolvono nella home page del wiki rispetto al resto delle pagine. Ho provato tutto qui senza fortuna. L'unica cosa che mi è venuta in mente finora è usare 2 diversi file _Sidebar.md e organizzare i file in sottodirectory.
NightOwl888,

93

Ad esempio, hai un repository come il seguente:

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

Il collegamento relativo a subtext.mdin text.mdpotrebbe essere simile al seguente:

[this subtext](subpro/subtext.md)

Il collegamento relativo a subsubtext.mdin text.mdpotrebbe essere simile al seguente:

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

Il collegamento relativo a subtext.mdin subsubtext.mdpotrebbe essere simile al seguente:

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

Il collegamento relativo a subsubtext2.mdin subsubtext.mdpotrebbe essere simile al seguente:

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

Il collegamento relativo a text.mdin subsubtext.mdpotrebbe essere simile al seguente:

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

1
Una cosa che ho trovato, i collegamenti fanno distinzione tra maiuscole e minuscole, cosa che non mi aspettavo.
Andy Wiesendanger,

Cosa succede se ci sono spazi nelle mie directory?
Rishav

16

Al 31 gennaio 2013 il markdown di Github supporta collegamenti relativi ai file .

[a relative link](markdown_file.md)

Tuttavia, ci sono alcune carenze che sono state discusse in questo thread di commenti .

In alternativa, puoi utilizzare Gitdown per costruire URL completi nel repository e persino renderli consapevoli del ramo, ad es

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

Gitdown è un preprocessore di markdown GitHub. Semplifica le attività comuni associate alla gestione di una pagina di documentazione per un repository GitHub, ad esempio la generazione di un sommario, comprese le variabili, la generazione di URL e la raccolta di informazioni sul repository stesso al momento dell'elaborazione dell'input. Gitdown si integra perfettamente con i tuoi script di costruzione.

Sono l'autore della biblioteca di Gitdown.


1
@Thomas Fa parte dei termini d'uso di Stack Overflow? In caso affermativo, si prega di condividere un collegamento. Sono curioso di conoscere la motivazione alla base di tale requisito.
Gajus,

5
"Pubblica risposte valide e pertinenti e se alcuni (ma non tutti) si verificano sul tuo prodotto o sito Web, va bene. Tuttavia, devi rivelare la tua affiliazione nelle tue risposte." stackoverflow.com/help/behavior
Thomas

1
Si potrebbe pensare che questo rientri nella meta informazione che Stack Overflow sta cercando di evitare così tanto, cioè che promuove una discussione fuori tema.
Gajus,

14

GitHub potrebbe renderlo molto migliore con un lavoro minimo. Ecco una soluzione.

Penso che tu voglia qualcosa di più simile

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

o per indicare il README stesso

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

In bocca al lupo


3
sì, questo è quello che faccio oggi. Non voglio inserire le informazioni sul ramo nel link. Dovrebbe essere relativo.
rynop,

8

Volevo solo aggiungere questo perché nessuna delle soluzioni sopra ha funzionato se il link di destinazione è una directory con spazi nel suo nome. Se il link di destinazione è una directory e ha spazio, anche il escape dello spazio con \ non rende il link su Github. L'unica soluzione che ha funzionato per me sta usando %20per ogni spazio.

es: se la struttura delle directory è questa

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

Per rendere il collegamento a Dir AREADME.md presente in Top_dirte puoi fare questo:

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

8

Puoi collegarti a file, ma non a cartelle, e tieni presente che, Github aggiungerà /blob/master/prima del tuo collegamento relativo (e le cartelle mancano di quella parte in modo che non possano essere collegate, né con <a>tag HTML o collegamento Markdown).

Quindi, se abbiamo un file myrepo/src/Test.java, avrà un url come:

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

E per collegarlo nel file Leggimi, possiamo usare:

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

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

(Immagino che masterrappresenti il masterramo e differisce quando il file si trova in un altro ramo.)


7

È possibile utilizzare gli URL relativi dalla radice del repository con <a href="">. Supponendo che il proprio repository sia denominato testRel, inserire quanto segue 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
questa sintassi MD non valida
astroanu,

6

Questa domanda è piuttosto vecchia, ma sembra comunque importante, poiché non è facile inserire riferimenti relativi da readme.md alle pagine wiki su Github.

Ho giocato un po 'in giro e questo link relativo sembra funzionare abbastanza bene:

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

I due ../rimuoveranno /blob/master/e useranno la tua base come punto di partenza. Non ho provato questo su altri repository oltre a Github (potrebbero esserci problemi di compatibilità).


4

Non sono sicuro di vedere questa opzione qui. Puoi semplicemente creare un /foldernel tuo repository e usarlo direttamente:

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

Non è necessario alcun BLOB o nome albero o repository e funziona come un incantesimo.


1
Penseresti che sarebbe il modo ovvio ma non funziona per me.
Kmeixner,

4

Se vuoi un link relativo alla tua pagina wiki su GitHub, usa questo:

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

Se si desidera un collegamento a un file nel repository, diciamo, per fare riferimento a un file di intestazione e la pagina wiki è alla radice del wiki, utilizzare questo:

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

La logica dell'ultimo è saltare il percorso "/ wiki" con "../" e andare al ramo principale nella struttura del repository senza specificare il nome del repository, che potrebbe cambiare in futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.