我想下载一个 .zip,其中包含托管在 github 上的库的源代码,但我不想要 master,因为每次下载时我都可能下载不同的版本。
这个特定的库没有标签,所以我不能使用它。
那么如何下载特定提交 sha 的 source.zip 呢?
您可以将所需的 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 令牌。
以下是有关此的更多信息:
查看提交代码时,单击右上角的“Browse Code”按钮,然后单击“Download ZIP”。
这是一个老问题,但想提一下,如果您只想将提交作为补丁,而不是提交时的整个仓库,您可以使用:
$ wget http://github.com/username/repo/commit/sha1.patch
# ^^^^^^^^ ^^^^ ^^^^
# change change change
/commit
和.patch
部分是重要的部分。
如果您想合并一个前一段时间被撤销的更改,因此这在分叉的 repo 中不存在,这将特别有用。
对于那些来这里寻找从特定提交(或分支)下载特定文件(或目录)的方法的人:
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。