从GitHub存储库中下载单个文件夹或目录
从GitHub存储库中下载单个文件夹或目录
如何从托管在GitHub上的远程Git存储库中仅下载特定的文件夹或目录?
假设示例GitHub存储库在此处:
git@github.com:foobar/Test.git
它的目录结构:
Test/ ├── foo/ │ ├── a.py │ └── b.py └── bar/ ├── c.py └── d.py
我只想下载foo文件夹,而不是克隆整个Test项目。
admin 更改状态以发布 2023年5月23日
2021年4月更新:社区创建了几个可以为您完成此操作的工具:
- Download Directory(由fregante贡献)
- 它也已经被集成在出色的Refined Github Chrome扩展程序中,作为Github web UI中的按钮。
- GitZip(由Kino贡献 - 可以在他的答案这里看到)
- DownGit(由Minhas Kamal贡献 - 可以在他的答案这里看到)
注:如果您尝试下载大量文件,则可能需要向这些工具提供令牌以避免速率限制。
原始(手动)方法:Git本身不支持检出单个目录,但Github可以通过SVN实现此操作。
如果您使用Subversion检出代码,则Github将在后端将存储库从Git转换为Subversion,然后提供请求的目录。
以下是如何使用这个功能下载指定文件夹的步骤。我们以流行的JavaScript库 lodash
作为例子。
-
导航至需要下载的文件夹。我们将从
master
分支下载/test
。 -
修改“subversion”的URL。将
tree/master
替换为trunk
。https://github.com/lodash/lodash/tree/master/test
➜https://github.com/lodash/lodash/trunk/test
-
下载文件夹。进入命令行,使用SVN抓取文件夹。
svn checkout https://github.com/lodash/lodash/trunk/test
你可能不会立即看到任何活动,因为Github需要最多30秒来转换较大的代码库,所以要耐心等待。
完整的URL格式说明:
- 如果你需要
master
分支,请使用trunk
代替。因此完整路径为trunk/foldername
- 如果你需要
foo
分支,请使用branches/foo
代替。完整路径看起来像branches/foo/foldername
- 提示:如果需要,你可以使用
svn ls
查看可用的标签和分支再进行下载。
就这样!Github 支持更多的subversion功能,包括提交和推送更改。