Tautan relatif GitHub dalam file Penurunan harga


831

Apakah ada cara untuk membuat jangkar URL <a>, tautan dari dalam file Markdown, ke file lain dalam repositori dan cabang yang sama (alias tautan relatif ke cabang saat ini)?

Sebagai contoh, di cabang master saya memiliki file README.md, yang ingin saya lakukan seperti:

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

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

Ini akan memungkinkan saya untuk menautkan dari .md ke yang lain dalam cabang yang sama dan tidak perlu khawatir tentang cabang mana saya berada (menghindari harus melakukan URL absolut yang mencakup nama cabang github.com).

Ini adalah contoh kerja dari apa yang saya maksud:

  1. GOTO http://github.com/rynop/testRel , tautan tidak berfungsi.
  2. GOTO http://github.com/rynop/testRel/blob/master/README.md , tautan berfungsi.

Ini diharapkan karena pada titik ini URL awal ada di cabang. Sekarang bagaimana cara mendapatkannya untuk mengambil cabang saat ini di README.md di root repositori?

Pembaruan : Saya membuka masalah terhadap GitHub untuk permintaan fitur ini.


21
Akhirnya : tautan relatif sekarang didukung! Saya telah memperbarui jawaban saya :)
VonC

Ini semua informasi yang baik jika Anda mencoba membuka .md lain atau membuka http / s web lain atau html atau bahkan halaman .jpg, .png, atau jpeg, tetapi bagaimana Anda membuat Markdown membuka .pdf? Saya tidak bisa mendapatkan sintaks yang benar untuk membukanya .pdf saya yang ada di direktori yang sama dengan file .md. Adakah yang bisa membantu membuka .pdf?
Elton

Anda dapat menemukan beberapa solusi dalam pertanyaan ini: stackoverflow.com/questions/40422790/…
Oleg Pro

Jawaban:


970

Pembaruan 30, Januari 2013 , 16 bulan kemudian:

GitHub Blog Post Relatif tautan dalam file markup :

Mulai hari ini, GitHub mendukung tautan relatif dalam file markup .
Sekarang Anda dapat menautkan langsung antara file dokumentasi yang berbeda, apakah Anda melihat dokumentasi di GitHub itu sendiri, atau secara lokal, menggunakan renderer markup yang berbeda.

Anda ingin contoh definisi tautan dan cara kerjanya? Berikut beberapa penurunan harga untuk Anda.
Alih-alih tautan absolut:

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

... Anda dapat menggunakan tautan relatif:

[a relative link](other_file.md)

dan kami akan memastikannya terhubung user/repo/blob/branch/other_file.md.

Jika Anda menggunakan solusi seperti [a workaround link](repo/blob/master/other_file.md), Anda harus memperbarui dokumentasi Anda untuk menggunakan sintaks baru.

Ini juga berarti dokumentasi Anda sekarang dapat dengan mudah berdiri sendiri, tanpa selalu menunjuk ke GitHub .


Pembaruan 20 Desember 2011:

Masalah markup GitHub 84 saat ini ditutup oleh technoweenie , dengan komentar:

Kami mencoba menambahkan <base>tag untuk ini, tetapi menyebabkan masalah dengan tautan relatif lainnya di situs.


12 Oktober 2011:

Jika Anda melihat sumber mentahREADME.md dari penurunan harga itu sendiri (!), Jalur relatif tampaknya tidak didukung.
Anda akan menemukan referensi seperti:

[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 .. Saya dapat membuat URL relatif (coba [tautan] someDir / README.md, itu akan membuat jangkar) - tapi saya ingin tautan relatif cabang github sadar seperti: myRepo / tree / <$ curBranch> /pathToMd.md . Saya mungkin hanya akan membuka permintaan fitur dengan github.com
rynop

1
nggak. Lihat contoh lengkap di sini github.com/rynop/testRel . Saya bisa melakukan tautan relatif menentukan cabang, tapi itu mengalahkan tujuan dari apa yang saya coba lakukan di tempat pertama. Jika saya menghubungkan dari .md dalam satu subdir ke subdir yang lain, saya pikir itu akan menangani tautan relatif dengan baik. Masalah terjadi ketika menautkan dari .md di root repo.
rynop

2
Terkait: Untuk menautkan dari satu halaman wiki ke yang lain, [Welcome](./wiki/Hello)berfungsi, di mana Hello adalah halaman wiki lain dalam repo yang sama.
Wayne Bloss

1
@ wizlb Saya baru saja mencobanya tanpa path dan berfungsi juga di [Welcome](Hello)mana Hello adalah halaman wiki lain dalam repo yang sama.
Mottie

2
Ini berfungsi di halaman wiki biasa, tetapi jika Anda menambahkan file _Sidebar.md ada perbedaan antara bagaimana tautan diselesaikan pada halaman beranda wiki daripada halaman lainnya. Saya mencoba semuanya di sini tanpa hasil. Satu-satunya hal yang saya buat sejauh ini adalah menggunakan 2 file _Sidebar.md yang berbeda dan mengatur file ke dalam sub-direktori.
NightOwl888

93

Misalnya, Anda memiliki repo seperti berikut:

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

Tautan relatif ke subtext.mddalam text.mdmungkin terlihat seperti ini:

[this subtext](subpro/subtext.md)

Tautan relatif ke subsubtext.mddalam text.mdmungkin terlihat seperti ini:

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

Tautan relatif ke subtext.mddalam subsubtext.mdmungkin terlihat seperti ini:

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

Tautan relatif ke subsubtext2.mddalam subsubtext.mdmungkin terlihat seperti ini:

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

Tautan relatif ke text.mddalam subsubtext.mdmungkin terlihat seperti ini:

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

1
Satu hal yang saya temukan, tautannya peka huruf besar-kecil, yang tidak saya duga.
Andy Wiesendanger

Bagaimana jika ada ruang di direktori saya?
Rishav

16

Pada 31 Januari 2013, penurunan harga Github mendukung tautan relatif ke file .

[a relative link](markdown_file.md)

Namun, ada beberapa kekurangan yang telah dibahas dalam utas komentar ini .

Sebagai alternatif, Anda bisa menggunakan Gitdown untuk membuat URL lengkap ke repositori dan bahkan membuatnya jadi cabang, mis

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

Gitdown adalah preprocessor penurunan harga GitHub. Ini merampingkan tugas-tugas umum yang terkait dengan memelihara halaman dokumentasi untuk repositori GitHub, misalnya membuat daftar isi, termasuk variabel, menghasilkan URL dan mendapatkan informasi tentang repositori itu sendiri pada saat memproses input. Gitdown terintegrasi dengan mulus dengan skrip bangunan Anda.

Saya adalah penulis perpustakaan Gitdown.


1
@ Thomas Apakah ini bagian dari ketentuan penggunaan Stack Overflow? Jika ya, silakan bagikan tautan. Saya ingin tahu motivasi di balik persyaratan seperti itu.
Gajus

5
"Kirimkan jawaban yang baik dan relevan, dan jika beberapa (tetapi tidak semua) kebetulan mengenai produk atau situs web Anda, tidak apa-apa. Namun, Anda harus mengungkapkan afiliasi Anda dalam jawaban Anda." stackoverflow.com/help/behavior
Thomas

1
Orang akan berpikir ini jatuh di bawah meta informasi yang berusaha dihindari Stack Overflow, yaitu yang mempromosikan diskusi di luar topik.
Gajus

14

GitHub bisa membuat ini jauh lebih baik dengan pekerjaan minimal. Ini adalah solusi.

Saya pikir Anda menginginkan sesuatu yang lebih seperti

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

atau menunjuk ke README itu sendiri

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

Semoga berhasil


3
ya ini yang saya lakukan hari ini. Saya tidak ingin memanggang info cabang ke dalam tautan. Itu harus relatif.
rynop

8

Hanya ingin menambahkan ini karena tidak ada solusi di atas yang berfungsi jika tautan target adalah direktori dengan spasi di namanya. Jika tautan target adalah direktori dan memiliki ruang maka bahkan keluar dari ruang dengan \ tidak membuat tautan di Github. Hanya solusi yang berfungsi untuk saya gunakan %20untuk setiap ruang.

misalnya: jika struktur direktori adalah ini

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

Untuk membuat tautan ke Dir Adalam README.md, Top_dirAnda dapat melakukannya:

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

8

Anda dapat menautkan ke file, tetapi tidak ke folder, dan perlu diingat bahwa, Github akan menambahkan /blob/master/sebelum tautan relatif Anda (dan folder tidak memiliki bagian itu sehingga tidak dapat ditautkan, juga dengan HTML<a> tag atau tautan Markdown).

Jadi, jika kita memiliki file myrepo/src/Test.java, itu akan memiliki url seperti:

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

Dan untuk menautkannya dalam file readme, kita dapat menggunakan:

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

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

(Saya kira, mastermewakili mastercabang dan berbeda ketika file di cabang lain.)


7

Anda dapat menggunakan URL relatif dari akar repo Anda <a href="">. Dengan asumsi repo Anda bernama testRel, masukkan yang berikut ini di 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
sintaks md ini tidak valid
astroanu

6

Pertanyaan ini cukup lama, tetapi tampaknya masih penting, karena tidak mudah untuk menempatkan referensi relatif dari readme.md ke halaman wiki di Github.

Saya bermain-main sedikit dan tautan relatif ini tampaknya bekerja dengan cukup baik:

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

Keduanya ../akan menghapus /blob/master/dan menggunakan basis Anda sebagai titik awal. Saya belum mencoba ini di repositori selain Github, (mungkin ada masalah kompatibilitas).


4

Saya tidak yakin apakah saya melihat opsi ini di sini. Anda bisa membuatnya /folderdi repositori dan menggunakannya secara langsung:

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

Tidak ada gumpalan atau pohon atau nama repositori diperlukan, dan itu berfungsi seperti pesona.


1
Anda akan berpikir itu akan menjadi cara yang jelas tetapi tidak berhasil bagi saya.
Kmeixner

4

Jika Anda ingin tautan relatif ke halaman wiki Anda di GitHub, gunakan ini:

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

Jika Anda ingin tautan ke file di repositori, izinkan kami mengatakan, untuk merujuk beberapa file header, dan halaman wiki adalah akar dari wiki, gunakan ini:

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

Alasan untuk yang terakhir adalah untuk melewatkan jalur "/ wiki" dengan "../", dan pergi ke cabang master di pohon repositori tanpa menentukan nama repositori, yang mungkin berubah di masa depan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.