如何使用cURL从GitHub下载tarball?

我正在尝试使用cURL从GitHub下载tarball,但似乎没有redirect:

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 <html><body>You are being <a href="https://nodeload.github.com/pinard/Pymacs/tarball/v0.24-beta2">redirected</a>.</body></html> 

注意:wget适合我:

 $ wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 

但是我想使用cURL,因为最终我想用类似下面的内容来解压缩它:

 $ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx 

我发现redirect后的URL竟然是https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz ,但我希望cURL足够聪明这个出来了。

使用-L选项来跟随redirect:

 curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx 

现代化的做法是:

 curl -sL https://github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz | tar xz 

相应地replaceuser-or-orgreposha1-or-ref

如果你想要一个压缩文件,而不是一个压缩包,指定.zip而不是.tar.gz后缀。

您还可以通过指定-u token:x-oauth-basic选项来检索私人回购的归档。 将tokenreplace为个人访问令牌。

你也可以使用wget来“解压缩它”。 只需将stdout指定为输出文件( -O - ):

 wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 -O - | tar xz