如何从GitHub上托管的远程Git repo中仅下载特定文件夹或目录?
举个GitHub repo的例子:
git@github.com:foobar/Test.git
其目录结构:
Test/
├── foo/
│ ├── a.py
│ └── b.py
└── bar/
├── c.py
└── d.py
我只想下载foo文件夹,而不是克隆整个测试项目。
如何从GitHub上托管的远程Git repo中仅下载特定文件夹或目录?
举个GitHub repo的例子:
git@github.com:foobar/Test.git
其目录结构:
Test/
├── foo/
│ ├── a.py
│ └── b.py
└── bar/
├── c.py
└── d.py
我只想下载foo文件夹,而不是克隆整个测试项目。
当前回答
通过在url中将github替换为githubbox,打开repo到codesandbox,然后在codesandbox上转到文件菜单并将其导出为zip。
对于以下回购:https://github.com/geist-org/react/tree/master/examples/custom-themes
输入以下url:https://githubbox.com/geist-org/react/tree/master/examples/custom-themes
在codesandbox中,转到文件菜单并将其导出为Zip。
其他回答
git稀疏校验
Git 2.25.0包含了一个新的实验性Git稀疏签出命令,它使现有功能更易于使用,同时还为大型存储库带来了一些重要的性能优势。(GitHub博客)
当前版本示例:
git clone --filter=blob:none --sparse https://github.com/git/git.git
cd git
git sparse-checkout init --cone
git sparse-checkout add t
最值得注意的是
--稀疏仅将git存储库的顶级目录文件签入工作副本git稀疏签出add t增量添加/签出git的t子文件夹
其他要素
git稀疏签出init做了一些准备以启用部分签出--filter=blob:none通过只下载必要的git对象来优化数据获取(查看部分克隆功能以了解更多信息)--cone还通过应用更受限制的文件包含模式来提高性能
GitHub状态
GitHub仍在内部评估这一功能,尽管它在少数几个存储库上启用了[…]。随着该功能的稳定和成熟,我们将不断更新其进展。(文档)
对于通用git Repo:
如果您想下载文件,而不是克隆具有历史记录的存储库,可以使用gitarchive来完成此操作。
gitarchive生成git存储库的压缩zip或tar存档。让它与众不同的一些东西:
您可以选择git存储库中要归档的文件或目录。它不会将.git/文件夹或其运行的存储库中任何未跟踪的文件归档。您可以归档特定的分支、标记或提交。使用git管理的项目通常使用它来生成项目版本(beta、release、2.0等)的存档,供用户下载。
使用ssh从远程存储库创建docs/usage目录归档的示例:
# in terminal
$ git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage > /tmp/usage_docs.tar
更多信息请参阅本博客文章和git文档。
GitHub Repos注意事项:
GitHub不允许git存档访问。☹️
其他答案没有错,但我只是想为那些第一次在这个过程中徘徊的人分享一步一步的指导。
如何从github存储库(Mac OS X)下载单个文件夹:
~要打开终端,只需单击聚光灯并键入终端,然后点击enter
在Mac上,您可能已经拥有SVN(只需测试开放终端和键入“svn”或“which svn”~(不带引号)在Github上:通过单击repo中的特定文件夹名称,找到git文件夹(而不是repo)的Github路径从浏览器的地址栏复制路径打开终端并键入:svn export下一步粘贴地址(例如):https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI替换单词:tree/master带有单词:trunk键入文件的目标文件夹(在本例中,I将目标文件夹存储在当前用户)这里空格只是空格键而不是单词(空格)~/Downloads/HeadsUpUI最后一个终端命令显示下载文件夹(将地址与步骤5进行比较)svn导出https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI~/下载/HeadsUpUI
BTW-如果您在Windows或其他平台上,您可以在以下位置找到subversion(svn)的二进制下载http://subversion.apache.org
~如果您想签出文件夹而不是简单地下载它,请尝试使用svn帮助(tldr:replace export with checkout)
使现代化
关于恢复中断的下载/签出的评论。我会尝试先运行svn清理,然后再运行svn更新。请在SO中搜索其他选项。
如果你真的只想“下载”文件夹,而不想“克隆”它(用于开发),那么最简单的方法就是简单地获取存储库的最新版本的副本(以及其中的文件夹/文件),而无需首先克隆整个存储库,甚至安装git,下载zip存档(对于任何repo、fork、branch、commit等),方法是转到GitHub上所需的存储库/fork/branch/commit(例如,http://GitHub.com/<user>/<repo>/commit/<Sha1>,获取文件副本,如同在特定提交后一样),然后选择右上方的下载按钮。
这种存档格式不包含任何git repo魔法,只包含被跟踪的文件本身(如果它们被跟踪的话,可能还有几个.gitignore文件,但你可以忽略它们:p)-这意味着如果代码发生变化,并且你想保持在顶部,你必须手动重新下载它,这也意味着你不能将其用作git存储库。。。
不确定在这种情况下,这是否是您想要的(再次,“下载”/查看vs“克隆”/开发),但它仍然很有用。。。
在尝试了所有答案后,对我来说最好的解决方案是:
GitHub基于vscode的编辑器。
赞成的意见:
不需要任何额外的工具,如svn或API令牌。内容大小无限制另存为目录或文件,而不是存档。
说明书
转到任何回购。(例如。https://github.com/RespiraWorks/Ventilator/tree/master/software)按或者在URL中将.com替换为.dev,以在GitHub的内部编辑器中打开repo在资源管理器窗格(左侧或按Ctrl+Shift+E)中,右键单击所需的文件/文件夹并选择下载。在“选择文件夹”对话框中,选择磁盘上希望所选文件/文件夹存在的目录。
Note
我尝试了其他解决方案,如接受的答案,
不要只为此安装和学习svn。其他工具,如Download Directory、Refined GitHub、GitZip和DownGit,要么需要API令牌,要么无法下载大型目录。
其他选项
带有远程存储库扩展名的VSCode,用于打开存储库并下载文件/文件夹。