programing

특정 커밋샤를 위해 GitHub에서 .zip을 다운로드하는 방법?

padding 2023. 10. 15. 17:04
반응형

특정 커밋샤를 위해 GitHub에서 .zip을 다운로드하는 방법?

github에서 호스팅하는 라이브러리의 소스로 .zip을 다운로드하고 싶지만 다운로드할 때마다 다른 버전을 다운로드할 수 있기 때문에 마스터를 원하지 않습니다.

이 도서관은 태그가 없어서 사용할 수가 없습니다.

특정 커밋샤에 대해 source.zip을 다운로드하려면 어떻게 해야 합니까?

다운로드 url에 원하는 sha를 넣을 수 있습니다.

https://github.com/{username}/{projectname}/archive/{sha}.zip

일반적으로 작동하는 URL이 있는 경우 "마스터"를 원하는 특정 sha로 대체할 수 있습니다.

유닉스의 경우:

wget https://github.com/{username}/{projectname}/archive/{sha}.zip

이것이 개인 레포일 경우 OAuth 토큰을 전달하지 않으면 wget이 작동하지 않습니다.

이에 대한 자세한 정보는 다음과 같습니다.

Private Repo에서 Git 아카이브 타르볼을 다운로드하는 데 문제가 있음

커밋의 코드를 볼 때 오른쪽 상단에 있는 "코드 찾아보기" 버튼을 클릭한 후 "ZIP 다운로드"를 클릭합니다.

이것은 오래된 질문이지만, 커밋 당시 전체 레포가 아니라 단지 커밋을 패치로 원하는 경우 다음을 사용할 수 있습니다.

$ wget http://github.com/username/repo/commit/sha1.patch
#                        ^^^^^^^^ ^^^^        ^^^^
#                        change   change      change

/commit그리고..patch부품이 중요한 부분입니다.

이것은 얼마 전에 뒤바뀌어서 분기된 레포에 존재하지 않는 변경사항을 병합하려는 경우에 특히 유용합니다.

특정 커밋(또는 분기)에서 특정 파일(또는 디렉토리)을 다운로드할 수 있는 방법을 찾고자 여기에 온 사람들의 경우:

git_user="user-name"
git_project="project-name"
commit_or_branch="sha-id or branch name"
dir_or_file="path/to/dir-or-file"

archive_url="https://github.com/${git_user}/${git_project}/archive/${commit_or_branch}.tar.gz"

wget -O - ${archive_url} | tar xz --strip=1 "${git_project}-${commit_or_branch}/${dir_or_file}"

다음과 같이 아카이브를 다운로드할 수 있는 이점tar.gz, tar 명령에 직접 파이프를 넣을 수 있기 때문에 gz를 즉시 추출할 수 있습니다.

언급URL : https://stackoverflow.com/questions/13636559/how-to-download-zip-from-github-for-a-particular-commit-sha

반응형