마크 다운 파일의 GitHub 상대 링크


831

<a>Markdown 파일 내에서 URL 리포지토리를 작성하여 동일한 저장소 및 브랜치 (현재 브랜치와 관련된 링크) 내의 다른 파일로 링크하는 방법이 있습니까?

예를 들어, 마스터 브랜치에는 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에서 다른 .md로 연결할 수 있으며 어떤 분기에 있는지 걱정할 필요가 없습니다 (github.com 분기 이름을 포함하는 절대 URL을 수행하지 않아야 함).

다음은 내가 의미하는 바의 실제 예입니다.

  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로 여는 방법은 무엇입니까? .md 파일과 동일한 디렉토리에있는 내 .pdf를 열도록 올바른 구문을 얻을 수 없습니다. 누구든지 .pdf 파일을 열 수 있습니까?
Elton

이 질문에서 해결책을 찾을 수 있습니다 : stackoverflow.com/questions/40422790/…
Oleg Pro

답변:


970

16 개월 후 2013 년 1 월 30 일 업데이트 :

마크 업 파일의 GitHub 블로그 게시물 관련 링크 :

오늘부터 GitHub는 마크 업 파일의 상대 링크를 지원합니다 .
이제 GitHub 자체에서 문서를 보든, 다른 마크 업 렌더러를 사용하여 로컬로든 다른 문서 파일간에 직접 연결할 수 있습니다.

링크 정의의 예와 그 작동 방식을 원하십니까? 여기 당신을위한 마크 다운이 있습니다.
절대 링크 대신 :

[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를 가리 키지 않고도 문서가 쉽게 독자적으로 설 수 있음을 의미 합니다 .


2011 년 12 월 20 일 업데이트 :

GitHub의 마크 업 문제 (84)는 현재에 의해 폐쇄 technoweenie 주석으로 :

<base>이 태그를 추가하려고했지만 사이트의 다른 상대 링크에 문제가 발생했습니다.


2011 년 10 월 12 일 :

Markdown 자체 (!) 의 원시 소스README.md 를 보면 상대 경로가 지원되지 않는 것 같습니다.
다음과 같은 참조가 있습니다.

[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을 만들 수 있습니다 ([link] someDir / README.md를 시도하십시오. 앵커를 만들 것입니다). 그러나 github 브랜치가 myRepo / tree / <$ curBranch> /pathToMd.md와 같은 상대 링크를 인식하도록하고 싶습니다. . 아마도 github.com에서 기능 요청을 열 것입니다
rynop

1
아니. 전체 예제는 github.com/rynop/testRel 입니다. 지점을 지정하는 상대 링크를 수행 할 수는 있지만 처음부터하려고하는 목적을 상실합니다. 한 하위 디렉토리의 .md에서 다른 하위 디렉토리로 링크하는 경우 상대 링크를 잘 처리한다고 생각합니다. repo의 루트에있는 .md에서 링크 할 때 문제가 발생합니다.
rynop

2
관련 : 한 위키 페이지에서 다른 위키 페이지로 링크하기 위해 [Welcome](./wiki/Hello)Hello는 동일한 저장소에있는 다른 위키 페이지입니다.
Wayne Bloss

1
@wizlb 방금 경로없이 시도 [Welcome](Hello)했으며 Hello가 동일한 리포지토리의 다른 위키 페이지 인 경우에도 작동합니다 .
Mottie

2
이것은 일반적인 위키 페이지에서 작동하지만 _Sidebar.md 파일을 추가하면 위키 페이지에서 링크가 나머지 페이지보다 어떻게 해결되는지에 차이가 있습니다. 나는 운없이 여기에서 모든 것을 시도했다. 지금까지 내가 찾은 유일한 것은 2 개의 다른 _Sidebar.md 파일을 사용하고 파일을 하위 디렉토리로 구성하는 것입니다.
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

2013 년 1 월 31 일부터 Github 마크 다운 은 파일에 대한 상대 링크를 지원합니다 .

[a relative link](markdown_file.md)

그러나이 의견 스레드에서 논의 된 몇 가지 결함이 있습니다 .

대안으로, Gitdown 을 사용 하여 리포지토리에 대한 전체 URL을 구성하고 분기를 인식하도록 할 수도 있습니다.

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

Gitdown은 GitHub 마크 다운 프리 프로세서입니다. 변수를 포함한 목차 생성, URL 생성 및 입력 처리시 저장소 자체에 대한 정보 얻기와 같은 GitHub 저장소의 문서 페이지 유지 관리와 관련된 일반적인 작업을 간소화합니다. Gitdown은 빌딩 스크립트와 완벽하게 통합됩니다.

저는 Gitdown 라이브러리의 저자입니다.


1
@Thomas 스택 오버플로 이용 약관의 일부입니까? 그렇다면 링크를 공유하십시오. 나는 그러한 요구에 대한 동기를 알고 싶어합니다.
Gajus

5
"좋은 답변을 게시하고 제품이나 웹 사이트에 관한 내용이 전부는 아니지만 일부라도 괜찮습니다. 그러나 귀하의 답변에 귀하의 소속을 공개해야합니다." stackoverflow.com/help/behavior
토마스

1
이것이 스택 오버플로가 피하려고하는 메타 정보, 즉 논외 토론을 장려하는 메타 정보에 속한다고 생각할 것입니다.
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 AREADME.md에 링크하려면 Top_dir다음을 수행하십시오.

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

8

파일에 링크 할 수는 있지만 /blob/master/폴더에는 링크 할 수 없으며 Github은 상대 링크 앞에 추가 합니다 (그리고 폴더에는 해당 부분이 없으므로 HTML <a>태그 또는 마크 다운 링크로 링크 할 수 없습니다 ).

따라서에 파일 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을 사용할 수 있습니다 <a href="">. 리포지토리의 이름이이라고 가정하면 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에서 Github의 wiki 페이지에 상대 참조를 넣기가 쉽지 않기 때문에 여전히 중요해 보입니다.

나는 조금 놀았고이 상대 링크는 꽤 잘 작동하는 것 같습니다.

[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.