123

我想下载一个 .zip,其中包含托管在 github 上的库的源代码,但我不想要 master,因为每次下载时我都可能下载不同的版本。

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

那么如何下载特定提交 sha 的 source.zip 呢?

4

4 回答 4

253

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

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

作为一般规则,如果您有一个有效的 url,您可以将“master”替换为您想要的特定 sha。

在 unix 上:

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

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

以下是有关此的更多信息:

从 Private Repo 下载 Git 归档 tarball 时遇到问题

于 2012-11-29T23:55:33.290 回答
44

查看提交代码时,单击右上角的“Browse Code”按钮,然后单击“Download ZIP”。

于 2013-08-27T17:37:17.160 回答
8

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

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

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

如果您想合并一个前一段时间被撤销的更改,因此这在分叉的 repo 中不存在,这将特别有用。

于 2015-03-27T18:34:21.067 回答
2

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

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

于 2020-09-27T09:21:22.923 回答