GitHub 저장소에서 단일 폴더 또는 디렉토리 다운로드


Answers

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

옵션 1 : 브라우저 확장

Chrome 확장 프로그램 , Firefox Addon

용법:

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

토큰 얻기 :

  1. 브라우저에서 GitZip 확장 프로그램 아이콘을 클릭하십시오.
  2. "Get Token"외에도 "Normal"또는 "Private"링크를 클릭하십시오.
  3. Github 인증 페이지에 GitZip 권한을 부여하십시오.
  4. 처음의 repo 페이지로 돌아갑니다.
  5. 계속 사용하십시오.

옵션 2 : Github gh-page

GitHub API 및 JSZip, FileSaver.js 라이브러리를 사용하여 GitZip .

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

대부분의 경우 Github Trees API 제한 때문에 폴더가 1,000 개가 넘는 파일을 포함한다는 점을 제외하고는 정상적으로 작동합니다. ( Github API # 내용 참조 )

또한 GitHub 계정이 있고이 사이트에서 "토큰 받기"링크를 사용하면 개인 / 공개 repos를 지원하고 속도 제한을 업그레이드 할 수 있습니다.

Question

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

예를 들어 GitHub 저장소가 여기에 살고 있다고 가정 해보십시오.

git@github.com:foobar/Test.git

디렉토리 구조 :

Test/
    foo/ 
       a.py
       b.py
    bar/
       c.py
       d.py

foo 폴더 만 다운로드하고 전체 테스트 프로젝트는 복제하지 않으려합니다.




GitHubFolderDownloader 라는 오픈 소스 프로젝트를 만들었습니다. 전체 저장소를 복제하거나 다운로드하지 않고도 저장소의 단일 폴더를 다운로드 할 수 있습니다.




위의 답변을 증폭시키기 위해 실제 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

때로는 구체적인 예가 제안 된 치환을 명확히하는 데 도움이됩니다.




그것은 SVN이 힘내보다 좋은 몇 안되는 곳 중 하나입니다.

결국 우리는 다음 세 가지 옵션에 중점을 둡니다.

  1. wget을 사용하여 GitHub에서 데이터를 가져옵니다 (원시 파일보기 사용).
  2. 업스트림 프로젝트가 필요한 아티팩트를 빌드 아티팩트로 게시하도록하십시오.
  3. 포기하고 전체 체크 아웃을 사용하십시오. 첫 번째 빌드에서는 큰 인기를 얻었지만 많은 트래픽이 발생하지 않는 한 다음 빌드에서는 별다른 번거 로움이 없습니다.



다운로드하고자하는 directoy가 분리 된 라이브러리 인 경우, 다른 git repo를 만든 다음 git submodule 기능을 사용하는 것이 좋습니다.

물론 원하는 초기 repo의 소유자가되어야합니다.




CentOS 7 서버에서 root 권한이없고 git, svn 등도 필요하지 않습니다 (그래서!) 그래서 github 폴더를 다운로드하는 python 스크립트를 만들었습니다 : https://github.com/andrrrl/github-folder-downloader

사용법은 간단합니다. 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 이 작동합니다 (ref : https://.com/a/33464597/591257 ).




svn 을 가지고 있다면, svn export 를 사용하면됩니다 :

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

URL 형식을 확인하십시오.

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

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

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



당신은 할 수 없습니다; 각 서브 디렉토리를 개별적으로 체크 아웃 할 수있는 Subversion과는 달리 Git은 전체 저장소 단위로 작동합니다.

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

Git 프론트 엔드 (예 : GitHub의 웹 인터페이스 또는 gitweb)가 특정 폴더를 추출하기위한 인터페이스를 제공하도록 선택할 수는 있지만 내 지식으로는 아무 것도하지 않습니다 (개별 파일을 다운로드 할 수는 있지만 , 폴더에 너무 많은 파일이 포함되어 있지 않으면 옵션입니다)

편집 - 실제로 GitHub는 SVN을 통해 액세스 권한을 제공합니다.이 기능을 사용하면 (주석 당)이 작업을 수행 할 수 있습니다. 이 작업을 수행하는 방법에 대한 최신 지침은 https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away 를 참조 https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away




1.이 링크를 클릭하십시오 http://kinolien.github.io/gitzip/
2. 다운로드하려는 Github 폴더의 링크를 붙여 넣으십시오.
3. 검색을 클릭하면 다운로드 할 파일이 모두 표시됩니다.
참고 : - 검색을 사용하여 토큰 키를 입력 할 필요가 없습니다;) .. 간단하게 유지 (y)




프로그래밍 방식으로해야하고 SVN에 의존하고 싶지 않은 경우 GitHub API를 사용하여 모든 내용을 재귀 적으로 다운로드 할 수 있습니다.

영감을 얻으려면 여기 내 루비 요점이 있습니다 : https://gist.github.com/cvengros/b2a7e82f66519d423b6f