etc./StackOverFlow

GitHub 리포지토리에서 단일 폴더 또는 디렉터리 다운로드

청렴결백한 만능 재주꾼 2022. 3. 7. 11:53
반응형

질문자 :g_inherit


GitHub에서 호스팅되는 원격 Git 리포지토리에서 특정 폴더나 디렉터리만 다운로드하려면 어떻게 해야 합니까?

GitHub 리포지토리가 여기에 있다고 가정해 보겠습니다.

 git@github.com:foobar/Test.git

디렉토리 구조:

 Test/ ├── foo/ │ ├── a.py │ └── b.py └── bar/ ├── c.py └── d.py

전체 테스트 프로젝트를 복제하지 않고 foo 폴더만 다운로드하고 싶습니다.



2021년 4월 업데이트 : 커뮤니티에서 이 작업을 수행할 수 있는 몇 가지 도구가 있습니다.

참고: 많은 수의 파일을 다운로드하려는 경우 속도 제한을 피하기 위해 이러한 도구에 토큰을 제공해야 할 수 있습니다.


원래(수동) 접근 방식: 개별 디렉토리 체크아웃은 git 지원되지 않지만 Github는 SVN을 통해 이를 수행할 수 있습니다. Subversion으로 코드를 체크아웃하면 Github는 기본적으로 저장소를 백엔드에서 git에서 subversion으로 변환한 다음 요청된 디렉터리를 제공합니다.

이 기능을 사용하여 특정 폴더를 다운로드하는 방법은 다음과 같습니다. 인기 있는 자바스크립트 라이브러리 lodash 를 예로 사용하겠습니다.

  1. 다운로드할 폴더로 이동합니다 . master 브랜치에서 /test 를 다운로드 해보자. github repo URL 예시

  2. Subversion의 URL을 수정합니다 . tree/mastertrunk 교체하십시오.

    https://github.com/lodash/lodash/tree/master/test

    https://github.com/lodash/lodash/trunk/test

  3. 폴더를 다운로드합니다 . 명령줄로 이동하여 SVN이 있는 폴더를 가져옵니다.

 svn checkout https://github.com/lodash/lodash/trunk/test

Github에서 더 큰 리포지토리를 변환하는 데 최대 30초가 걸리기 때문에 즉시 활동이 표시되지 않을 수 있으므로 인내심을 가지십시오.

전체 URL 형식 설명:

  • master 브랜치에 관심이 있다면 trunk 사용하십시오. 따라서 전체 경로는 trunk/foldername
  • foo 브랜치에 관심이 있다면 branches/foo 사용하세요. 전체 경로는 branches/foo/foldername
  • svn ls 를 사용하여 사용 가능한 태그와 분기를 볼 수 있습니다.

그게 다야! Github은 변경 사항 커밋 및 푸시 지원을 포함하여 더 많은 Subversion 기능도 지원합니다.


nick

DownGit으로 이동 > URL 입력 > 다운로드!

DownGit 에서 GitHub 공개 디렉토리 또는 파일에 대한 다운로드 링크 를 직접 다운로드 하거나 생성할 수 있습니다. 다음은 간단한 데모입니다.


다운깃


다운로드한 파일의 자세한 사용 속성을 구성할 수도 있습니다.


면책 조항: 질문자와 같은 문제에 빠졌고 적절한 해결책을 찾지 못했습니다. 그래서 저는 먼저 이 도구 를 제 자신의 용도로 만든 다음 모든 사람에게 공개했습니다. :)


Minhas Kamal

이 기능에 대한 두 가지 옵션:

옵션 1: GitZip 브라우저 확장

크롬 확장 , 파이어폭스 애드온

용법:

  1. 모든 GitHub 저장소 페이지에서.
  2. 필요한 항목의 빈 부분을 두 번 클릭하기만 하면 됩니다.
  3. 우측 하단의 다운로드 버튼을 클릭합니다.
  4. 진행 대시보드를 보고 브라우저 트리거 다운로드를 기다립니다.
  5. ZIP 파일을 가져옵니다.

토큰 받기:

  1. 브라우저에서 GitZip 확장 아이콘을 클릭합니다.
  2. "토큰 받기" 옆에 있는 "일반" 또는 "비공개" 링크를 클릭합니다.
  3. Github 인증 페이지에서 GitZip 권한을 승인합니다.
  4. 처음의 repo 페이지로 돌아갑니다.
  5. 계속 사용하십시오.

옵션 2: Github gh-page

GitHub API 및 JSZip, FileSaver.js 라이브러리를 사용하여 http://kinolien.github.io/gitzip.

1단계: 오른쪽 상단의 필드에 github url을 입력합니다.
2단계: Enter 키를 누르거나 다운로드 zip을 직접 클릭하려면 다운로드를 클릭하거나 하위 폴더 및 파일 목록을 보려면 검색을 클릭하세요.
3단계: "Zip 파일 다운로드" 또는 "파일 가져오기" 버튼을 클릭하여 파일을 가져옵니다.

Github Trees API 제한으로 인해 폴더에 1,000개 이상의 파일이 포함되어 있다는 점을 제외하면 대부분의 경우 제대로 작동합니다. ( Github API#Contents 참조 )

또한 GitHub 계정이 있고 이 사이트에서 "토큰 가져오기" 링크를 사용하는 경우 비공개/공개 저장소를 지원하고 속도 제한을 업그레이드할 수 있습니다.


Kino

svn 이 있는 경우 svn export 를 사용하여 다음을 수행할 수 있습니다.

 svn export https://github.com/foobar/Test.git/trunk/foo

URL 형식을 확인하세요.

  • 기본 URL은 https://github.com/
  • /trunk 끝에 추가됨

svn export 를 실행하기 전에 먼저 다음을 사용하여 디렉토리 내용을 확인하는 것이 좋습니다.

 svn ls https://github.com/foobar/Test.git/trunk/foo

janos

일반 자식 저장소의 경우:

히스토리가 있는 저장소를 복제하지 않고 파일을 다운로드하려면 git-archive 하여 이를 수행할 수 있습니다.

git-archive 는 git 저장소의 압축된 zip 또는 tar 아카이브를 만듭니다. 특별하게 만드는 몇 가지 사항:

  1. 아카이브할 git 저장소의 파일 또는 디렉토리를 선택할 수 있습니다.
  2. .git/ 폴더 또는 실행되는 저장소의 추적되지 않은 파일은 보관하지 않습니다.
  3. 특정 분기, 태그 또는 커밋을 보관할 수 있습니다. git으로 관리되는 프로젝트는 종종 이것을 사용하여 사용자가 다운로드할 수 있는 프로젝트 버전(베타, 릴리스, 2.0 등)의 아카이브를 생성합니다.

ssh로 연결된 원격 저장소에서 docs/usage 디렉토리의 아카이브를 만드는 예:

 # in terminal $ git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage > /tmp/usage_docs.tar

이 블로그 게시물git 문서 에서 더 많은 정보를 얻을 수 있습니다.

GitHub 리포지토리에 대한 참고 사항:

git-archive 액세스를 허용하지 않습니다 . ☹️


RobW

다른 답변에는 문제가 없지만이 과정을 처음으로 방황하는 사람들을 위해 단계별 지침을 공유 할 것이라고 생각했습니다.

github 저장소에서 단일 폴더를 다운로드하는 방법(Mac OS X):

~ 터미널을 열려면 스포트라이트를 클릭하고 터미널을 입력한 다음 Enter 키를 누르십시오.

  1. Mac에서 당신은 가능성이 이미 (인용 부호없이 "있는 SVN"테스트에 열어 터미널 및 유형 "SVN"또는 ~) SVN이
  2. Github에서: 리포지토리 내의 특정 폴더 이름을 클릭하여 git 폴더(리포지토리 아님)에 대한 Github 경로를 찾습니다.
  3. 브라우저의 주소 표시줄에서 경로 복사
  4. 터미널을 열고 다음 을 입력하십시오: svn export
  5. 다음 주소(예: https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI)에 붙여넣기
  6. 단어 바꾸기: tree/master
  7. 단어와 함께: 트렁크
  8. 파일의 대상 폴더를 입력합니다(이 예에서는 현재 사용자의 다운로드 폴더 안에 대상 폴더를 저장합니다).
  9. 여기서 스페이스는 단어 (스페이스)가 아닌 스페이스바일 뿐입니다. ~/Downloads/HeadsUpUI
  10. 최종 터미널 명령은 폴더를 다운로드하는 전체 명령을 보여줍니다(주소를 5단계와 비교) svn export https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI ~/Downloads/HeadsUpUI

BTW - Windows 또는 다른 플랫폼을 사용하는 경우 http://subversion.apache.org 에서 Subversion(svn)의 바이너리 다운로드를 찾을 수 있습니다.

~ 단순히 다운로드하는 대신 폴더를 체크아웃하려면 svn 도움말을 사용해 보십시오(tldr: exportcheckout으로 대체).

업데이트

중단된 다운로드/체크아웃 재개에 대한 의견에 대해 svn cleanup 다음에 svn update 실행하려고 합니다. 추가 옵션은 SO를 검색하십시오.


Tommie C.

특정 폴더에서 작업하는 사람은 그 특정 폴더 자체를 복제해야 하므로 스파스 체크아웃을 사용하여 아래 단계를 따르십시오.

  1. 디렉터리를 만듭니다.

  2. Git 리포지토리를 초기화합니다. ( git init )

  3. 스파스 체크아웃을 활성화합니다. ( git config core.sparsecheckout true )

  4. Git에게 원하는 디렉토리를 알려주십시오 (echo 2015/brand/May( 작업하려는 폴더 참조) >> .git/info/sparse-checkout )

  5. 원격 추가( git remote add -f origin https://jafartke.com/mkt-imdev/DVM.git )

  6. 파일 가져오기( git pull origin master )


Mohammed Jafar

당신은 할 수 없습니다; 각 하위 디렉터리를 개별적으로 확인할 수 있는 Subversion과 달리 Git은 전체 저장소 기반으로 작동합니다.

세분화된 액세스가 필요한 프로젝트의 경우 하위 모듈을 사용할 수 있습니다. 각 하위 모듈은 별도의 Git 프로젝트이므로 개별적으로 복제할 수 있습니다.

Git 프론트엔드(예: GitHub의 웹 인터페이스 또는 gitweb)는 주어진 폴더를 추출할 수 있는 인터페이스를 제공하도록 선택할 수 있지만 내가 아는 한 그들 중 누구도 그렇게 하지 않습니다(개별 파일을 다운로드할 수는 있지만 , 따라서 폴더에 너무 많은 파일이 포함되어 있지 않으면 옵션입니다)

편집 - GitHub는 실제로 SVN을 통한 액세스를 제공하므로 주석에 따라 이 작업을 수행할 수 있습니다. 이 작업을 수행하는 방법에 대한 최신 지침은 https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away를 참조하세요.


michel-slm

2019년 요약

이 작업을 수동으로 수행할지 프로그래밍 방식으로 수행할지 여부에 따라 다양한 방법으로 이를 처리할 수 있습니다.

아래에 요약된 네 가지 옵션이 있습니다. 그리고 더 직접적인 설명을 선호하는 사람들을 위해 YouTube 동영상을 만들었습니다. GitHub에서 개별 파일 및 폴더 다운로드 .

또한 GitHub(폴더와 반대)에서 단일 파일을 다운로드해야 하는 사람들을 위해 StackOverflow에 비슷한 답변을 게시했습니다.


1. GitHub 사용자 인터페이스

  • 저장소 홈페이지에 다운로드 버튼이 있습니다. 물론 이것은 전체 리포지토리를 다운로드한 후 다운로드의 압축을 풀고 필요한 특정 폴더를 수동으로 끌어야 합니다.

2. 타사 도구

  • 이를 처리할 수 있는 다양한 브라우저 확장 프로그램과 웹 앱이 있으며 DownGit 이 그 중 하나입니다. 폴더(예: https://github.com/babel/babel-eslint/tree/master/lib )에 GitHub URL을 붙여넣고 "다운로드" 버튼을 누르기만 하면 됩니다.

3. 전복

  • GitHub는 git-archive(특정 폴더를 다운로드할 수 있는 git 기능)를 지원하지 않습니다. 그러나 GitHub는 다양한 Subversion 기능을 지원하며 그 중 하나를 이 용도로 사용할 수 있습니다. Subversion은 버전 제어 시스템(git의 대안)입니다. Subversion이 설치되어 있어야 합니다. 다운로드하려는 폴더의 GitHub URL을 가져옵니다. 하지만 이 URL을 수정해야 합니다. 리포지토리에 대한 링크와 "trunk"라는 단어가 뒤따르고 중첩 폴더의 경로로 끝나는 링크를 원합니다. 즉, 위에서 언급한 것과 동일한 폴더 링크 예제를 사용하여 "tree/master"를 "trunk"로 바꿉니다. 마지막으로 터미널을 열고 콘텐츠를 다운로드할 디렉토리로 이동한 후 다음 명령을 입력합니다(URL을 구성한 URL로 교체). svn export https://github.com/babel/babel-eslint/trunk/lib 를 입력하고 Enter 키를 누릅니다.

4. 깃허브 API

  • 이것은 프로그래밍 방식으로 이 작업을 수행하려는 경우 필요한 솔루션입니다. 그리고 이것은 실제로 DownGit이 내부적으로 사용하고 있는 것입니다. GitHub의 REST API 를 사용하여 콘텐츠 엔드포인트에 GET 요청을 수행하는 스크립트를 작성합니다. https://api.github.com/repos/:owner/:repo/contents/:path 와 같이 구성할 수 있습니다. 자리 표시자를 교체한 후 엔드포인트의 예는 https://api.github.com/repos/babel/babel-eslint/contents/lib 입니다. 그러면 해당 폴더에 있는 모든 콘텐츠에 대한 JSON 데이터가 제공됩니다. 데이터에는 콘텐츠가 폴더인지 파일인지 여부, 파일인 경우 다운로드 URL, 폴더인 경우 API 엔드포인트(해당 폴더에 대한 데이터를 가져올 수 있도록)를 포함하여 필요한 모든 것이 있습니다. 이 데이터를 사용하여 스크립트는 대상 폴더의 모든 콘텐츠를 재귀적으로 살펴보고 중첩 폴더에 대한 폴더를 만들고 각 폴더에 대한 모든 파일을 다운로드할 수 있습니다. 영감을 얻으 려면 DownGit의 코드 를 확인하세요.

jabacchetta

개발을 위해 폴더를 "복제" 하지 않고 "다운로드" 하고 싶다면 가장 최근 버전의 리포지토리(따라서 폴더/파일) 의 복사본 을 얻는 가장 쉬운 방법입니다. 전체 리포지토리를 복제하거나 처음에 git을 설치할 필요 없이 GitHub의 원하는 리포지토리/포크/분기/커밋으로 이동하여 zip 아카이브(모든 리포지토리, 포크, 분기, 커밋 등)를 다운로드하는 것입니다. (예: http(s)://github.com/<user>/<repo>/commit/<Sha1> 특정 커밋 이후의 파일 복사본) 오른쪽 상단 근처에 있는 Downloads .

이 아카이브 형식에는 git-repo 마법이 포함되어 있지 않고 추적된 파일 자체(추적된 경우 몇 개의 .gitignore 파일이 있지만 무시할 수 있음 :p)만 포함되어 있습니다. 즉, 코드가 변경되고 원하는 경우 맨 위에 유지하려면 수동으로 다시 다운로드해야 하며 git 저장소로 사용할 수 없다는 의미이기도 합니다...

이것이 이 경우에 찾고 있는 것인지 확실하지 않지만(다시 "다운로드"/보기 대 "복제"/개발), 그럼에도 불구하고 유용할 수 있습니다...


johnny

githubdl 할 수 있는 githubdl이라는 Python3 pip 패키지가 있습니다*:

 export GIT_TOKEN=1234567890123456789012345678901234567890123 pip install githubdl githubdl -u http://github.com/foobar/test -d foo

프로젝트 페이지는 여기

* 면책 조항: 이 패키지를 작성했습니다.


Willem van Ketwich

유닉스 명령에 익숙하다면 특별한 종속성이나 웹 앱이 필요하지 않습니다. 리포지토리를 tarball로 다운로드하고 필요한 부분만 untar할 수 있습니다.

예(fontawesome의 하위 디렉토리에 있는 woff2 파일):

 curl -L https://api.github.com/repos/FortAwesome/Font-Awesome/tarball | tar xz --wildcards "*/web-fonts-with-css/webfonts/*.woff2" --strip-components=3
  • 링크 형식에 대한 추가 정보: https://developer.github.com/v3/repos/contents/#get-archive-link(zip 파일 또는 특정 분기/참조를 가져오는 방법 포함)
  • 모든 디렉토리와 일치하도록 경로의 초기 부분( */ Github은 이름에 commit ref가 있는 래퍼 디렉터리를 생성하므로 알 수 없습니다.
  • --strip-components 가 경로(이전 인수)에 있는 / )의 양과 같기를 원할 것입니다.

이것은 전체 tarball을 다운로드할 것입니다. 이것을 피해야 하거나 GitHub 서버에 친절하려면 다른 답변에 언급된 SVN 방법을 사용하십시오.


Albin

또 다른 구체적인 예:

URL에서 'iOS Pro Geo' 폴더를 다운로드하고 싶은 것처럼

https://github.com/alokc83/APRESS-Books-Source-Code-/ tree/master /%20Pro%20iOS%20Geo

그리고 나는 그것을 통해 할 수 있습니다

 svn checkout https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo

경로에 있는 참고 트렁크

편집됨: (Tommie C의 의견에 따름)

예, 체크아웃 대신 내보내기 를 사용하면 추가 git 저장소 파일 없이 깨끗한 복사본을 얻을 수 있습니다.

 svn export https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo

편집됨: 트리/마스터가 URL에 없으면 포크하면 포크된 URL에 있습니다.


zeeawan

디렉토리 트리를 간단하게 다운로드할 수 있습니다.

 git archive --remote git@github.com:foobar/Test.git HEAD:foo | tar xf -

그러나 확인하고 커밋을 수행하고 다시 푸시할 수 있다면 그렇게 할 수 없습니다.


araqnid

git clone --filter 가 이제 GitHub에서 작동합니다.

테스트 2020-09-18, 자식 2.25.1.

이 옵션은 원격 프로토콜 업데이트와 함께 추가되었으며 서버에서 개체가 다운로드되는 것을 실제로 방지합니다.

d1 에 필요한 개체만 복제하려면 다음을 수행합니다. https://github.com/cirosantilli/test-git-partial-clone 다음 을 수행할 수 있습니다.

 git clone \ --depth 1 \ --filter=blob:none \ --no-checkout \ https://github.com/cirosantilli/test-git-partial-clone \ ; cd test-git-partial-clone git checkout master -- d1

Git: Git 저장소의 하위 디렉토리만 복제하려면 어떻게 해야 하나요?


Ciro Santilli 新疆再教育营六四事件法轮功郝海东

다음과 같은 방법으로 git-svn을 사용할 수 있습니다.

첫째, 대체 tree/mastertrunk , 다음 설치 git-svn 하여 sudo apt install git-svn

 git svn clone https://github.com/lodash/lodash/trunk/test

이렇게 하면 특히 Windows 사용자를 위해 svn을 설정하는 고통을 겪지 않아도 됩니다.


V3K3R

어떤 답변도 내 상황에 도움이되지 않았습니다. Windows용으로 개발 중이라면 svn이 없을 가능성이 큽니다. 많은 상황에서 사용자가 Git을 설치했다고 믿을 수 없거나 다른 이유로 전체 저장소를 다운로드하고 싶지 않습니다. Willem van Ketwich 및 aztack과 같이 이 질문에 답변한 사람들 중 일부는 이 작업을 수행하기 위한 도구를 만들었습니다. 그러나 도구가 사용 중인 언어로 작성되지 않았거나 타사 라이브러리를 설치하지 않으려는 경우 작동하지 않습니다.

그러나 훨씬 더 쉬운 방법이 있습니다. GitHub에는 GET 요청을 사용하여 단일 파일 또는 전체 디렉토리 콘텐츠를 다운로드할 수 있는 API가 있습니다. 디렉토리의 모든 파일을 열거하는 JSON 객체를 반환하는 https://api.github.com/repos/:owner/:repo_name/contents/:path 를 사용하여 디렉토리에 액세스할 수 있습니다. 열거형에는 파일의 원시 콘텐츠인 download_url 매개변수에 대한 링크가 포함되어 있습니다. 그런 다음 해당 URL을 사용하여 파일을 다운로드할 수 있습니다.

GET 요청을 수행할 수 있는 기능이 필요한 2단계 프로세스이지만 이는 모든 플랫폼에서 거의 모든 언어로 구현될 수 있습니다. 파일이나 디렉토리를 가져오는 데 사용할 수 있습니다.


Calvin

git sparse-checkout

Git 2.25.0 에는 기존 기능을 더 쉽게 사용할 수 있도록 하는 새로운 실험적 git sparse-checkout 명령과 함께 대규모 리포지토리에 대한 몇 가지 중요한 성능 이점이 포함되어 있습니다. ( GitHub 블로그 )

현재 버전의 예:

 git clone --filter=blob:none --sparse https://github.com/git/git.git cd git git sparse-checkout init --cone git sparse-checkout add t

가장 주목할만한

  • --sparse git 저장소의 최상위 디렉토리 파일만 작업 복사본으로 체크아웃합니다.
  • git sparse-checkout add t git t 하위 폴더를 점진적으로 추가/체크아웃합니다.

기타 요소

  • git sparse-checkout init 는 부분 체크아웃을 활성화하기 위해 몇 가지 준비를 합니다.
  • --filter=blob:none 필요한 git 객체만 다운로드하여 데이터 가져오기를 최적화합니다( 추가 정보는 부분 복제 기능 참조).
  • --cone 은 또한 보다 제한된 파일 포함 패턴을 적용하여 성능 속도를 높입니다.

GitHub 상태

GitHub는 일부 리포지토리 [...]에서 활성화되어 있는 동안 이 기능을 내부적으로 계속 평가하고 있습니다. 기능이 안정화되고 성숙해짐에 따라 진행 상황을 계속 업데이트해 드리겠습니다. ( 문서 )


ford04

이것이 내가 git v2.25.0으로 수행하는 방법이며 v2.26.2에서도 테스트되었습니다. 이 트릭은 v2.30.1에서 작동하지 않습니다.

TLDR

 git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv cd opencv # requires git 2.25.x to 2.26.2 git sparse-checkout set data/haarcascades

Docker 를 사용하여 특정 버전의 git 설치를 방지할 수 있습니다.

 git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv cd opencv # requires git 2.25.x to 2.26.2 docker run --rm -it -v $PWD/:/code/ --workdir=/code/ alpine/git:v2.26.2 sparse-checkout set data/haarcascades

전체 솔루션

 # bare minimum clone of opencv $ git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv ... Resolving deltas: 100% (529/529), done. # Downloaded only ~7.3MB , takes ~3 seconds # du = disk usage, -s = summary, -h = human-readable $ du -sh opencv 7.3M opencv/ # Set target dir $ cd opencv $ git sparse-checkout set data/haarcascades ... Updating files: 100% (17/17), done. # Takes ~10 seconds, depending on your specs # View downloaded files $ du -sh data/haarcascades/ 9.4M data/haarcascades/ $ ls data/haarcascades/ haarcascade_eye.xml haarcascade_frontalface_alt2.xml haarcascade_licence_plate_rus_16stages.xml haarcascade_smile.xml haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalface_alt_tree.xml haarcascade_lowerbody.xml haarcascade_upperbody.xml haarcascade_frontalcatface.xml haarcascade_frontalface_default.xml haarcascade_profileface.xml haarcascade_frontalcatface_extended.xml haarcascade_fullbody.xml haarcascade_righteye_2splits.xml haarcascade_frontalface_alt.xml haarcascade_lefteye_2splits.xml haarcascade_russian_plate_number.xml

참고문헌


Meir Gabay

위의 답변을 증폭하기 위해 실제 GitHub 저장소에서 로컬 디렉토리로의 실제 예는 다음과 같습니다.

 svn ls https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces svn export https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces /temp/SvnExport/Washburn

때때로 구체적인 예는 제안된 대체를 명확히 하는 데 도움이 됩니다.


John Washburn

나는 리눅스를 사용하므로 이것을 ~/.bashrc 에 넣고 조차 :D $HOME/.bashrc

 git-dowloadfolder(){ a="$1" svn checkout ${a/tree\/master/trunk} }

그런 다음 쉘을 새로 고칩니다.

 source ~/.bashrc

그런 다음 git-downloadfolder blablabla와 함께 사용하십시오 :D


user1088530

SVN이 Git보다 나은 몇 안 되는 곳 중 하나입니다.

결국 우리는 세 가지 옵션에 끌렸습니다.

  1. wget을 사용하여 GitHub에서 데이터를 가져옵니다(원시 파일 보기 사용).
  2. 업스트림 프로젝트에서 필수 데이터 하위 집합을 빌드 아티팩트로 게시하도록 합니다.
  3. 포기하고 전체 결제를 사용하십시오. 첫 번째 빌드에서는 큰 성공을 거두었지만 트래픽이 많이 발생하지 않는 한 다음 빌드에서는 그다지 번거롭지 않습니다.

Manish Shrivastava

어떤 이유에서든 svn 솔루션이 작동하지 않고 svn 필요하지 않기 때문에 만들려고 시간을 들이는 것이 의미가 없으므로 이미 가지고 있는 도구를 사용하여 간단한 솔루션을 찾았습니다. . 이 스크립트는 "/:user:repo/contents/:path" 로 설명된 GitHub 디렉토리의 모든 파일을 다운로드하기 위해 curlawk 만 사용합니다.

"GET /repos/:user:repo/contents/:path" 명령에 대한 호출의 반환된 본문은 디렉터리의 각 파일에 대한 "download_url" 링크를 포함하는 개체를 반환합니다.

curl 사용하여 REST API를 호출하고 AWK를 통해 결과를 보냅니다. AWK는 "download_url" 줄을 제외한 모든 줄을 걸러내고 링크에서 따옴표와 쉼표를 지운 다음 curl에 대한 다른 호출을 사용하여 링크를 다운로드합니다.

 curl -s https://api.github.com/repos/:user/:repo/contents/:path | awk \ '/download_url/ { gsub("\"|,", "", $2); system("curl -O "$2"); }'

Pinecone

5단계만 진행하면 됩니다.

  • 여기 에서 SVN 을 다운로드하십시오.
  • CMD를 열고 다음과 같은 SVN bin 디렉토리 로 이동합니다 cd %ProgramFiles%\SlikSvn\bin
  • 이 디렉토리 URL 을 다운로드하고 싶다고 가정해 보겠습니다.
    https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples
  • tree/develop 또는 tree/mastertrunk 교체
  • 이제 이 마지막 명령을 실행하여 동일한 디렉토리에 폴더를 다운로드합니다.
 svn export https://github.com/ZeBobo5/Vlc.DotNet/trunk/src/Samples

Sorry IwontTell

우리 팀은 베어 본 서버에 SVN을 설치하고 싶지 않았기 때문에 이를 수행하기 위해 bash 스크립트를 작성했습니다.

https://github.com/ojbc/docker/blob/master/java8-karaf3/files/git-download.sh

github API를 사용하며 다음과 같이 명령줄에서 실행할 수 있습니다.

 git-download.sh https://api.github.com/repos/ojbc/main/contents/shared/ojb-certs

Yogesh Chawla

주소 표시줄에서 복사한 모든 URL과 함께 ghget 을 사용할 수 있습니다.

 ghget https://github.com/fivethirtyeight/data/tree/master/airline-safety

SVN을 사용하지 않는 독립형 휴대용 셸 스크립트입니다(큰 저장소에서는 작동하지 않음). 또한 API를 사용하지 않으므로 토큰이 필요하지 않으며 속도 제한이 없습니다.

면책 조항 : 나는 그것을 만들었습니다.


mohd.akram

저는 루트 액세스 권한이 없고 git, svn 등이 없는 CentOS 7 서버로 작업합니다. 따라서 github 폴더를 다운로드하는 Python 스크립트를 만들었습니다. https://github.com/andrrrl/github -폴더 다운로더

사용법은 간단합니다. github 프로젝트에서 관련 부분을 복사하기만 하면 됩니다. 프로젝트가 https://github.com/MaxCDN/php-maxcdn/ 이고 일부 소스 파일만 있는 폴더를 원한다고 가정해 보겠습니다. 다음과 같이 하십시오.

$ python gdownload.py "/MaxCDN/php-maxcdn/tree/master/src" /my/target/dir/
(존재하지 않는 경우 대상 폴더를 생성합니다)

lxml 라이브러리가 필요 easy_install lxml 로 설치할 수 있습니다.
나처럼 루트 액세스 권한이 없는 경우 다음 내용으로 $HOME .pydistutils.py 파일을 [install] user=1 그리고 easy_install lxml 이 작동합니다(참조: https://stackoverflow .com/a/33464597/591257 ).


aesede

url에서 github를 githubbox로 교체하고 코드샌드박스에서 파일 메뉴로 이동하여 zip으로 내보냄으로써 리포지토리를 코드샌드박스로 엽니다.

다음 리포지토리의 경우: https://github.com/geist-org/react/tree/master/examples/custom-themes

다음 URL을 입력하십시오. https:// githubbox .com/geist-org/react/tree/master/examples/custom-themes

코드샌드박스에서 파일 메뉴로 이동하여 Zip으로 내보냅니다.


Pankaj Patidar

시도 해봐.

https://github.com/twfb/git-directory-download

 usage: gitd [-h] [-u URL] [-r] [-p] [--proxy PROXY] optional arguments: -h, --help show this help message and exit -u URL, --url URL github url, split by ",", example: "https://x, http://y" -r, --raw download from raw url -p, --parse download by parsing html --proxy PROXY proxy config, example "socks5://127.0.0.1:7891" Example: 1. download by raw url: gitd -u "https://github.com/twfb/git-directory-download" 2. download by raw url: gitd -r -u "https://github.com/twfb/git-directory-download" 3. dowmload by parsing: gitd -p -u "https://github.com/twfb/git-directory-download" 4. download by raw url with proxy: gitd -r -u "https://github.com/twfb/git-directory-download" --proxy "socks5://127.0.0.1:7891"

admin

GitHub에서 디렉터리를 내보내려면 디렉터리 URL의 "/tree/master/"를 "/trunk/"로 바꿉니다.

예를 들어 다음 URL에서 디렉토리를 내보내려면:

 https://github.com/liferay/liferay-plugins/tree/master/portlets/sample-hibernate-portlet

다음 명령을 실행하십시오.

 svn export https://github.com/liferay/liferay-plugins/trunk/portlets/sample-hibernate-portlet

Mohsen Abasi

출처 : http:www.stackoverflow.com/questions/7106012/download-a-single-folder-or-directory-from-a-github-repo

반응형