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


106

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

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

那么,如何下载特定提交文件的source.zip?


3
不需要用php或composer-php标记,是吗?
Cacovsky

Answers:


218

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

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

通常,如果您的网址有效,则可以用所需的特定Sha替换“ master”。

在Unix上:

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

请记住,如果这是私有存储库,那么除非您也传递OAuth令牌,否则wget将不起作用。

这里是更多信息:

无法从Private Repo下载Git存档tarball


7
没想到这样做的(酷)方法。期待git命令;)
HenchHacker 2012年

还要检查此链接-可能正在寻找这个链接stackoverflow.com/a/48503019/341117
Ravindra Gullapalli

您也可以使用短阴影!
wjandrea

即使我wget -O用来重命名存档ZIP文件,在解压缩后,我也会得到一个很大的SHA1目录名。有什么办法可以避免这种情况?
QED

40

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


1
他们现在有一个“克隆或下载”按钮,您可以在其中“下载ZIP”。
SureshS 2016年

“克隆或下载”是新的按钮,代替了旧的“克隆”和“下载”按钮。新按钮没有特定版本-使用Zeki所述的方式
pal

3
这在2017年2月对我有用。它确实在选定提交的时间戳记下下载了具有更改的仓库。
ocean4dream

7

这是一个古老的问题,但是要提到的是,如果您只希望将提交作为补丁而不是整个提交时的回购,则可以使用:

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

/commit.patch部分作为重要的组成部分。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.