下载Git存储库时如何避免下载所有.git文件?

26

有没有一种方法可以从Unix命令行下载git存储库的内容,而不必拉取.git目录中的全部内容?我只想要最新版本的存储库目录和文件,而不是所有的差异。

此外,是否可以不使用git命令来完成这个操作(例如使用wget或curl)?

谢谢。


жҳҜзҡ„пјҢдҪҝз”Ёgitе‘Ҫд»ӨжҳҜеҸҜиғҪзҡ„пјҡhttps://dev59.com/questions/iXM_5IYBdhLWcg3w1G2NгҖӮ жҲ‘дёҚзҹҘйҒ“gitзҡ„еҶ…йғЁз»“жһ„жҳҜд»Җд№ҲпјҢдҪҶжҲ‘дёҘйҮҚжҖҖз–‘wgetжҲ–curlдјҡжңүз”ЁгҖӮ - CompuChip
你认为“git repo的内容”包括什么?导致当前版本的提交历史是存储库的一部分。下载最新版本就像下载最新的发布ZIP文件:没有历史记录,只有文件。如果没有发布版本,“git archive”应该会有所帮助,请参见https://dev59.com/03VC5IYBdhLWcg3w21Iq。 - Sven
15
@random说:“我非常讨厌人们过于轻易地拒绝那些可以帮助很多人的问题。是的,这是一个完全合理的问题。在现实世界中,编程不仅仅是简单地输入a+b。” - Bernard
4个回答

25

GitHub有一个下载源代码仓库的.zip压缩包的链接,所以请尝试使用它。

wget https://github.com/[user]/[repo]/archive/[branch].zip

用适当的字段替换[user][repo][branch]


通过API,您也可以获取tarball而不是zipball。文章 API参考 - Charlie
@Charlie 非常正确,但是OP要求使用wget的解决方案,所以我给了他们这个。 - randomusername

11
据我所知,最接近的方法是执行 git clone --depth=1 (以避免从服务器检索比最新版本更多的信息),然后删除 .git 目录。 就 Git 而言,.git 目录就是仓库;检出的文件只是为了方便而存在。 :)

你不能直接使用git协议来克隆,而无需先下载.git文件吗? - Rainb

2
第二部分:您可以尝试正确替换用户名和存储库名称。
wget http://github.com/[username]/[repo]/archive/master.zip

2

现在,GitHub甚至支持直接下载tar.gz文件。

因此,以下操作非常顺利。

curl -L http://github.com/[username]/[repo]/archive/[branch].tar.gz | tar zxf -

注意,在使用curl时,-L选项非常重要,因为该URL在提供内容之前有很多302 Redirect HTTP响应。wget会自动跟随它们,而curl不会。
[*] 七年后;-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接