我想从GitHub下载一个库的源码.zip文件,但我不想下载主分支,因为每次下载可能会得到不同的版本。
这个库没有标签可用,所以我不能用那个方法。
那么如何根据特定的提交 SHA 下载源代码 .zip 文件?
您可以在下载 URL 中放置所需的 sha:
https://github.com/{username}/{projectname}/archive/{sha}.zip
通常情况下,如果您有一个有效的 URL,则可以将 "master" 替换为您想要的特定 sha。
在 Unix 上:
wget https://github.com/{username}/{projectname}/archive/{sha}.zip
请注意,如果这是私有存储库,则 wget 将无法工作,除非您也传递 OAuth 令牌。
以下是更多信息:
Having trouble downloading Git archive tarballs from Private Repo
wget -O
重命名存档 ZIP 文件,解压缩后仍然会得到一个又大又丑的 SHA1 目录名称。有没有什么方法可以避免这种情况? - QED查看提交的代码时,请单击右上方的“浏览代码”按钮,然后单击“下载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
格式的归档文件的好处在于,您可以直接将wget管道传送到tar命令中,这样它将会即时解压缩gz文件。svn
的链接-首先需要安装SVN,而wget
已经在大多数平台上可用。不要仅仅进行投票,发表一个有用的答案。 - Noam Manos