如何从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文件夹,而不是克隆整个测试项目。
当前回答
为了放大上面的答案,一个从真正的GitHub存储库到本地目录的真实示例是:
svn ls https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces
svn export https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces /temp/SvnExport/Washburn
有时,一个具体的例子有助于澄清所提出的替代方案。
其他回答
这是SVN优于Git的少数几个地方之一。
最终,我们倾向于三种选择:
使用wget从GitHub获取数据(使用原始文件视图)。让上游项目将所需的数据子集发布为构建工件。放弃并使用全额结账。它在第一个版本中大受欢迎,但除非您获得大量流量,否则在接下来的版本中不会太麻烦。
无论谁在处理特定的文件夹,他都需要克隆该特定的文件夹本身,为此,请使用稀疏签出执行以下步骤。
创建目录。初始化Git存储库。(git初始化)启用稀疏检出。(git-config-core.sparsecheckout true)告诉Git你想要哪些目录(echo 2015/brand/May(参考你想要处理的文件夹)>>.Git/info/spease checkout)添加remote(gitremoteadd-f源https://jafartke.com/mkt-imdev/DVM.git)获取文件(git pull-origin master)
有一个名为githubdl的Python3pip包可以做到这一点*:
export GIT_TOKEN=1234567890123456789012345678901234567890123
pip install githubdl
githubdl -u http://github.com/foobar/test -d 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。
为了独特,我必须说,你也可以在没有svn、git或任何api的情况下下载Github文件夹。Github支持RAW链接,您可以利用该链接仅下载所需的文件和文件夹。
我注意到很多事情。以下是我的研究集:
机械装置
从网页中抓取所有超链接<a>并获取其href=“value”值如果href值包含“/tree/master/”或“/tree/main/”,则它是文件夹链接:https://github.com/graysuit/GithubFolderDownloader/tree/main/GithubFolderDownloader否则,如果href值包含“/bblo/master/”或“/bblo/main/”,则为文件链接:https://github.com/graysuit/GithubFolderDownloader/blob/main/GithubFolderDownloader.sln然后,将“github.com”替换为“raw.githubusercontent.com”,并从文件中删除“/blob/”:https://raw.githubusercontent.com/graysuit/GithubFolderDownloader/main/GithubFolderDownloader.sln它将成为RAW链接。现在你可以下载了。
Tool
在上述研究的基础上,我用C#创建了一个可以抓取文件夹的极简工具。graysuit/GithubFolderDownloader
注:我是作者。如果有任何遗漏或不清楚的地方,您可以发表评论。