ลิงก์ญาติ GitHub ในไฟล์ Markdown


831

มีวิธีในการสร้างที่ยึด URL <a>, เชื่อมโยงจากภายในไฟล์ Markdown ไปยังไฟล์อื่นภายในที่เก็บและสาขาเดียวกัน (หรือที่เรียกว่าลิงค์เทียบกับสาขาปัจจุบัน)?

ตัวอย่างเช่นในสาขาหลักฉันมีไฟล์ README.md ซึ่งฉันต้องการทำบางสิ่งเช่น:

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

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

สิ่งนี้จะอนุญาตให้ฉันเชื่อมโยงจาก. md หนึ่งไปยังอีกสาขาภายในสาขาเดียวกันและไม่ต้องกังวลว่าฉันสาขาใด (หลีกเลี่ยงการทำ URL แบบสัมบูรณ์ที่มีชื่อสาขา github.com)

นี่คือตัวอย่างการทำงานของสิ่งที่ฉันหมายถึง:

  1. GOTO http://github.com/rynop/testRelลิงก์ไม่ทำงาน
  2. GOTO http://github.com/rynop/testRel/blob/master/README.mdลิงก์ใช้งานได้

สิ่งนี้คาดว่าจะเกิดขึ้น ณ จุดนี้ URL เริ่มต้นจะอยู่ในสาขา ตอนนี้ฉันจะรับมันเพื่อรับสาขาปัจจุบันใน README.md ที่รูทของที่เก็บได้อย่างไร

อัปเดต : ฉันเปิดปัญหากับ GitHub สำหรับคำขอคุณลักษณะนี้


21
ในที่สุด : ตอนนี้ลิงก์ที่เกี่ยวข้องได้รับการสนับสนุนแล้ว! ฉันได้อัปเดตคำตอบของฉัน :)
VonC

นี่เป็นข้อมูลที่ดีหากคุณพยายามเปิด. md อื่นหรือไปที่เว็บ http / s หรือ html หรือหน้าเว็บ. jpg, .png หรือ jpeg อื่น แต่คุณจะเปิด Markdown ให้เป็น. pdf ได้อย่างไร? ฉันไม่สามารถรับไวยากรณ์ที่ถูกต้องเพื่อให้เปิดไฟล์. pdf ของฉันซึ่งอยู่ในไดเรกทอรีเดียวกับไฟล์. md ทุกคนสามารถช่วยในการเปิด. pdf ได้ไหม
Elton

คุณสามารถหาวิธีแก้ปัญหาในคำถามนี้: stackoverflow.com/questions/40422790/ …
Oleg Pro

คำตอบ:


970

อัปเดต30, มกราคม 2013 , 16 เดือนต่อมา:

GitHub บล็อกโพสต์ลิงก์ญาติในไฟล์มาร์กอัป :

เริ่มต้นวันนี้GitHub สนับสนุนการเชื่อมโยงญาติในไฟล์มาร์กอัป
ตอนนี้คุณสามารถเชื่อมโยงโดยตรงระหว่างไฟล์เอกสารต่างๆไม่ว่าคุณจะดูเอกสารใน GitHub เองหรือภายในเครื่องโดยใช้มาร์กอัปเรนเดอร์คนอื่น

คุณต้องการตัวอย่างของคำจำกัดความลิงก์และวิธีการทำงาน นี่คือ Markdown บางส่วนสำหรับคุณ
แทนการเชื่อมโยงที่แน่นอน:

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

... คุณสามารถใช้ลิงก์ที่เกี่ยวข้อง:

[a relative link](other_file.md)

user/repo/blob/branch/other_file.mdและเราจะทำให้แน่ใจว่าจะได้รับการเชื่อมโยงกับ

หากคุณกำลังใช้วิธีแก้ปัญหาเช่น[a workaround link](repo/blob/master/other_file.md)คุณจะต้องอัปเดตเอกสารของคุณเพื่อใช้ไวยากรณ์ใหม่

นอกจากนี้ยังหมายความเอกสารของคุณจึงสามารถยืนได้ด้วยตัวเองโดยไม่ต้องเสมอชี้ไป GitHub


อัปเดต 20 ธันวาคม 2011:

ปัญหามาร์กอัป GitHub 84ปิดให้บริการในขณะนี้โดยtechnoweenieกับความคิดเห็น:

เราพยายามเพิ่ม<base>แท็กสำหรับสิ่งนี้ แต่มันทำให้เกิดปัญหากับลิงค์ที่เกี่ยวข้องอื่น ๆ บนเว็บไซต์


12 ตุลาคม 2011:

หากคุณดูแหล่งข้อมูลดิบREADME.mdของ Markdown เอง (!) ดูเหมือนว่าเส้นทางที่เกี่ยวข้องจะไม่ได้รับการสนับสนุน
คุณจะพบการอ้างอิงเช่น:

[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
อืม .. ฉันสามารถสร้าง URL สัมพัทธ์ได้ (ลองใช้ [ลิงค์] someDir / README.md มันจะสร้างจุดยึด) - แต่ฉันต้องการให้ลิงก์ที่สัมพันธ์กับสาขา github ทราบ: myRepo / tree / <$ curBranch> /pathToMd.md . ฉันอาจจะเพียงแค่เปิดคำขอพร้อม github.com
rynop

1
Nope ดูตัวอย่างเต็มรูปแบบที่นี่github.com/rynop/testRel ฉันสามารถทำการเชื่อมโยงแบบสัมพัทธ์ที่ระบุสาขาได้ แต่นั่นเป็นการเอาชนะจุดประสงค์ของสิ่งที่ฉันพยายามจะทำในตอนแรก หากฉันเชื่อมโยงจาก. md ในส่วนย่อยหนึ่งไปอีกอันหนึ่งฉันคิดว่ามันจะจัดการกับลิงก์ที่สัมพันธ์กันได้ดี ปัญหาเกิดขึ้นเมื่อการเชื่อมโยงจาก. md ในรากของ repo
rynop

2
ที่เกี่ยวข้อง: สำหรับการเชื่อมโยงจากหน้าวิกิหนึ่งไปยังอีกหน้า[Welcome](./wiki/Hello)ทำงานโดยที่ Hello เป็นอีกหน้าวิกิใน repo เดียวกัน
Wayne Bloss

1
@wizlb ฉันลองมันโดยไม่ใช้พา ธ และมันก็ใช้ได้เช่นกัน[Welcome](Hello)โดยที่ Hello เป็นหน้าวิกิอื่นใน repo เดียวกัน
Mottie

2
สิ่งนี้ใช้ได้ในหน้า wiki ปกติ แต่ถ้าคุณเพิ่มไฟล์ _Sidebar.md จะมีความแตกต่างระหว่างวิธีแก้ไขลิงก์ในโฮมเพจของ wiki มากกว่าหน้าอื่น ๆ ฉันลองทุกอย่างที่นี่โดยไม่มีโชค สิ่งเดียวที่ฉันเกิดขึ้นตอนนี้คือการใช้ไฟล์ _Sidebar.md 2 ไฟล์ที่แตกต่างกันและเพื่อจัดระเบียบไฟล์ลงในไดเรกทอรีย่อย
NightOwl888

93

ตัวอย่างเช่นคุณมีบัญชีซื้อคืนดังนี้:

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

การเชื่อมโยงสัมพันธ์กับsubtext.mdในtext.mdอาจมีลักษณะเช่นนี้

[this subtext](subpro/subtext.md)

การเชื่อมโยงสัมพันธ์กับsubsubtext.mdในtext.mdอาจมีลักษณะเช่นนี้

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

การเชื่อมโยงสัมพันธ์กับsubtext.mdในsubsubtext.mdอาจมีลักษณะเช่นนี้

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

การเชื่อมโยงสัมพันธ์กับsubsubtext2.mdในsubsubtext.mdอาจมีลักษณะเช่นนี้

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

การเชื่อมโยงสัมพันธ์กับtext.mdในsubsubtext.mdอาจมีลักษณะเช่นนี้

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

1
สิ่งหนึ่งที่ฉันได้พบการเชื่อมโยงเป็นกรณี ๆ ไปซึ่งฉันไม่ได้คาดหวัง
Andy Wiesendanger

เกิดอะไรขึ้นถ้ามีช่องว่างในไดเรกทอรีของฉัน
Rishav

16

ณ 31 มกราคม 2013 Github markdown สนับสนุนการเชื่อมโยงสัมพันธ์กับไฟล์

[a relative link](markdown_file.md)

อย่างไรก็ตามมีข้อบกพร่องบางอย่างที่ได้รับการกล่าวถึงในหัวข้อความคิดเห็นนี้

อีกทางเลือกหนึ่งคุณสามารถใช้Gitdownเพื่อสร้างURL แบบเต็มไปยังที่เก็บและทำให้พวกเขาทราบถึงสาขาเช่น

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

Gitdown เป็นตัวประมวลผลล่วงหน้าของ GitHub เพิ่มประสิทธิภาพงานทั่วไปที่เกี่ยวข้องกับการบำรุงรักษาหน้าเอกสารสำหรับที่เก็บ GitHub เช่นการสร้างสารบัญรวมถึงตัวแปรการสร้าง URL และการรับข้อมูลเกี่ยวกับที่เก็บข้อมูลเองในเวลาที่ทำการประมวลผลอินพุต Gitdown ทำงานร่วมกับสคริปต์สร้างของคุณได้อย่างราบรื่น

ฉันเป็นผู้แต่งห้องสมุด Gitdown


1
@Thomas เป็นส่วนหนึ่งของข้อกำหนดการใช้ Stack Overflow หรือไม่ ถ้าใช่โปรดแชร์ลิงก์ ฉันอยากรู้ว่าแรงจูงใจเบื้องหลังความต้องการนั้น
Gajus

5
"โพสต์คำตอบที่ดีมีความเกี่ยวข้องและถ้ามีบางคน (แต่ไม่ใช่ทั้งหมด) เกี่ยวกับผลิตภัณฑ์หรือเว็บไซต์ของคุณก็ไม่เป็นไรอย่างไรก็ตามคุณต้องเปิดเผยความร่วมมือในคำตอบของคุณ" stackoverflow.com/help/behavior
Thomas

1
ใครจะคิดว่าสิ่งนี้อยู่ภายใต้ข้อมูลเมตาที่ Stack Overflow พยายามหลีกเลี่ยงมากนั่นคือเป็นการส่งเสริมการอภิปรายนอกหัวข้อ
Gajus

14

GitHub สามารถทำให้สิ่งนี้ดีขึ้นมากด้วยการทำงานที่น้อยที่สุด นี่คือการแก้ไข

ฉันคิดว่าคุณต้องการอะไรมากกว่านี้

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

หรือเพื่อชี้ไปที่ README เอง

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

โชคดี


3
ใช่นี่คือสิ่งที่ฉันทำวันนี้ ฉันไม่ต้องการอบข้อมูลสาขาในลิงค์ มันควรจะเป็นญาติ
rynop

8

ต้องการเพิ่มสิ่งนี้เพราะวิธีการแก้ปัญหาด้านบนไม่ทำงานถ้าลิงค์เป้าหมายคือไดเรกทอรีที่มีช่องว่างในชื่อ หากลิงก์เป้าหมายเป็นไดเรกทอรีและมีพื้นที่ว่างแล้วให้เว้นช่องว่างด้วย \ ไม่แสดงลิงก์ใน Github ทางออกเดียวที่ใช้ได้สำหรับฉันใช้%20สำหรับแต่ละพื้นที่

เช่น: ถ้าโครงสร้างไดเรกทอรีเป็นแบบนี้

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

ในการสร้างลิงก์ไปยังDir Aใน README.md แสดงอยู่Top_dirคุณสามารถทำได้:

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

8

คุณสามารถลิงก์ไปยังไฟล์ได้ แต่ไม่ใช่ไปยังโฟลเดอร์และโปรดจำไว้ว่า Github จะเพิ่ม/blob/master/ก่อนที่ลิงก์แบบสัมพัทธ์ของคุณ (และโฟลเดอร์จะไม่มีส่วนนั้นจึงไม่สามารถลิงก์ได้ไม่ว่าจะมี<a>แท็กHTML หรือลิงก์ Markdown)

ดังนั้นหากเรามีไฟล์อยู่ไฟล์myrepo/src/Test.javaนั้นจะมี URL เช่น:

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

และเพื่อเชื่อมโยงมันในไฟล์ readme เราสามารถใช้:

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

หรือ: <a href="src/Test.java">This is a link</a>.

(ฉันคิดว่าmasterหมายถึงmasterสาขาและมันแตกต่างเมื่อไฟล์อยู่ในสาขาอื่น)


7

คุณสามารถใช้ URL สัมพัทธ์จากรูทของ repo ของคุณ<a href="">ได้ สมมติว่าชื่อ repo ของคุณtestRelใส่ต่อไปนี้ใน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
นี้ไม่ถูกต้อง md ไวยากรณ์
astroanu

6

คำถามนี้ค่อนข้างเก่า แต่ก็ยังคงมีความสำคัญเนื่องจากไม่ใช่เรื่องง่ายที่จะนำการอ้างอิงแบบสัมพันธ์จาก readme.md ไปยังหน้า wiki บน Github

ฉันเล่นไปเล็กน้อยและลิงก์ที่เกี่ยวข้องดูเหมือนว่าจะทำงานได้ดี:

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

ทั้งสอง../จะลบ/blob/master/และใช้ฐานของคุณเป็นจุดเริ่มต้น ฉันไม่ได้ลองสิ่งนี้กับที่เก็บอื่น ๆ กว่า Github แต่ (อาจมีปัญหาความเข้ากันได้)


4

ฉันไม่แน่ใจว่าฉันเห็นตัวเลือกนี้ที่นี่หรือไม่ คุณสามารถสร้าง/folderในที่เก็บของคุณและใช้โดยตรง:

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

ไม่จำเป็นต้องใช้ชื่อหยดหรือต้นไม้หรือพื้นที่เก็บข้อมูลและใช้งานได้อย่างมีเสน่ห์


1
คุณจะคิดว่ามันจะเป็นวิธีที่ชัดเจน แต่มันไม่ได้ผลสำหรับฉัน
Kmeixner

4

หากคุณต้องการลิงค์ญาติไปยังหน้าวิกิของคุณบน GitHub ให้ใช้สิ่งนี้:

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

หากคุณต้องการลิงก์ไปยังไฟล์ในที่เก็บให้เราพูดเพื่ออ้างอิงไฟล์ส่วนหัวบางส่วนและหน้าวิกิอยู่ที่รูทของวิกิให้ใช้สิ่งนี้:

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

เหตุผลสำหรับสุดท้ายคือการข้ามพา ธ "/ wiki" ด้วย "../" และไปที่สาขาหลักในแผนผังที่เก็บโดยไม่ต้องระบุชื่อที่เก็บซึ่งอาจมีการเปลี่ยนแปลงในอนาคต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.