如何从托管在 GitHub 上的远程 Git 存储库中仅下载特定文件夹或目录?
假设 GitHub 存储库的示例位于此处:
git@github.com:foobar/Test.git
它的目录结构:
Test/ ├── foo/ │ ├── a.py │ └── b.py └── bar/ ├── c.py └── d.py
我只想下载foo文件夹,而不是克隆整个 Test 项目。
注意:如果您尝试下载大量文件,您可能需要向这些工具提供令牌以避免速率限制。
原始(手动)方法:本机不支持检出单个目录git,但 Github 可以通过 SVN 执行此操作。如果你用 subversion 签出你的代码,Github 基本上会将 repo 从 git 转换为后端的 subversion,然后提供请求的目录。
git
以下是使用此功能下载特定文件夹的方法。我将使用流行的 javascript 库lodash作为示例。
lodash
导航到您要下载的文件夹。让我们/test从master分支下载。
/test
master
修改 subversion 的 URL。替换tree/master为trunk。
tree/master
trunk
https://github.com/lodash/lodash/tree/master/test➜
https://github.com/lodash/lodash/tree/master/test
https://github.com/lodash/lodash/trunk/test
svn checkout https://github.com/lodash/lodash/trunk/test
您可能不会立即看到任何活动,因为 Github 最多需要 30 秒来转换更大的存储库,所以请耐心等待。
完整的 URL 格式说明: 如果您对master分支感兴趣,请trunk改用。所以完整的路径是trunk/foldername 如果您对foo分支感兴趣,请branches/foo改用。完整路径看起来像branches/foo/foldername Protip:svn ls如果您愿意,可以在下载前查看可用的标签和分支
完整的 URL 格式说明:
trunk/foldername
foo
branches/foo
branches/foo/foldername
svn ls
就这样!Github还支持更多的颠覆功能,包括对提交和推送更改的支持。