如何从GitHub下载特定提交的.zip?

如何从GitHub下载特定提交的.zip?,git,github,Git,Github,我想下载一个.zip文件,其中包含github上托管的库的源代码,但我不想要master,因为每次下载时我都可能下载不同的版本 这个特定的库没有标记,所以我不能使用它 那么如何下载特定提交sha的source.zip?您可以将所需的sha放入下载url: https://github.com/{username}/{projectname}/archive/{sha}.zip 一般来说,如果你有一个有效的url,你可以用你想要的特定sha替换“master” 在unix上: wgethttps:

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

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


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

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

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

一般来说,如果你有一个有效的url,你可以用你想要的特定sha替换“master”

在unix上:

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

请记住,如果这是一个私有回购,那么wget将不起作用,除非您也传递一个OAuth令牌

以下是关于这方面的更多信息:


查看提交代码时,单击右上角的“浏览代码”按钮,然后单击“下载ZIP”

这是一个老生常谈的问题,但我想提及的是,如果您只希望提交作为补丁,而不是提交时的整个回购,您可以使用:

$ wget http://github.com/username/repo/commit/sha1.patch
#                        ^^^^^^^^ ^^^^        ^^^^
#                        change   change      change
/commit
.patch
部分是重要的部分


如果您想合并一个前一段时间被撤销的更改,因此在分叉回购中不存在,这一点尤其有用。

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


将归档文件下载为
tar.gz
的好处是,您可以将wget直接导入tar命令,因此它将动态提取gz

没有想到这样做(很酷)。应为git命令;)检查这个链接,以及-可能正在寻找这个代替你可以使用短sha太!即使我使用
wget-O
来重命名存档ZIP文件,当解压缩时,我也会得到一个丑陋的大SHA1目录名。有没有办法避免这种情况?这不需要用php或composer php标记,是吗?他们现在有一个“克隆或下载”按钮,您可以在其中“下载ZIP”。“克隆或下载”是新按钮,它取代了旧的“克隆”和“下载”按钮。新按钮没有特定的版本-使用Zeki在2017年2月描述的方式。它确实下载了repo,并在所选commit.wasteful的时间戳处进行了更改。文件可以直接下载,子目录可以通过github的SVN界面下载,请参阅@MilaNautikus您使用
SVN
的链接-需要先安装SVN,而
wget
已经在大多数平台上可用。不要投反对票,而是发布一个有用的答案。
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}"