关于git:如何从GitHub下载.zip以获得特定的提交密码?

How to download .zip from GitHub for a particular commit sha?

我想下载一个.zip并带有托管在github上的库的源代码,但是我不想要它的母版,因为每次下载时,我都可能会下载一个不同的版本。

这个特定的库没有标签,所以我不能使用它。

那么我如何下载特定commit sha的source.zip?


您可以将所需的sha放在下载URL中:

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

通常,如果您的网址有效,则可以将" master"替换为所需的特定Sha。

在Unix上:

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

请记住,如果这是一个私有存储库,那么除非您也传递OAuth令牌,否则wget将无法工作。

有关此的更多信息:

无法从Private Repo下载Git存档tarball


查看提交的代码时,单击右上方的"浏览代码"按钮,然后单击"下载ZIP"。


这是一个古老的问题,但是要提及的是,如果您只想将提交作为补丁而不是提交时的整个存储库,则可以使用:

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

/commit.patch部分是重要部分。

如果您要合并前一阵子撤消的更改,因此在分叉存储库中不存在,此功能特别有用。


对于那些来这里寻求从特定提交(或分支)下载特定文件(或目录)的方式的人:

1
2
3
4
5
6
7
8
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。