如何从github下载文件夹?

问题描述 投票:0回答:13

我希望从此链接下载 mysite 文件夹: https://github.com/username/repository/master/

git github ubuntu-14.04
13个回答
54
投票

可以从github下载文件/文件夹

只需使用:

svn export <repo>/trunk/<folder>

例如:

svn export https://github.com/lodash/lodash/trunk/docs

注意:您可以首先使用

svn ls <repo>/trunk/folder

在终端中列出文件夹的内容

(是的,这里就是 svn。显然在 2016 年你仍然需要 svn 来简单地下载一些 github 文件)


36
投票

您可以使用 Github Contents API 获取存档链接并使用

tar
检索指定文件夹。

命令行:

curl https://codeload.github.com/[所有者]/[repo]/tar.gz/master | \ tar -xz --strip=2 [repo]-master/[文件夹路径]


例如,
如果您想从 zeit/next.js 下载 examples/with-apollo/ 文件夹,您可以输入以下内容:

curl https://codeload.github.com/zeit/next.js/tar.gz/master | \
  tar -xz --strip=2 next.js-master/examples/with-apollo

24
投票

使用GitZip在线工具。它允许将 github 存储库的子目录下载为 zip 文件。不需要 git 命令!


12
投票

有一个按钮

Download ZIP
。如果您想进行稀疏结账,网站上有很多解决方案。例如这里。


12
投票

如何从 GitHub 存储库下载特定文件夹

这是根据此post的正确解决方案:

  • 创建目录

     mkdir github-project-name 
     cd github-project-name
    
  • 设置 git 存储库

     git init
     git remote add origin <URL-link of the repo>
    
  • 将您的 git-repo 配置为仅下载特定目录

     git config core.sparseCheckout true # enable this
    
  • 设置您要下载的文件夹,例如您只想从

    https://github.com/project-tree/master/doc

    下载 doc 目录
     echo "/absolute/path/to/folder" > .git/info/sparse-checkout 
    

    例如如果您只想从主存储库下载 doc 目录

    https://github.com/project-tree/master/doc
    ,那么您的命令是
    echo "doc" > .git/info/sparse-checkout

  • 照常下载您的存储库

     git pull origin master
    

3
投票

Github 的 VSCode 集成

像我一样浏览 github 存储库并希望从浏览器下载存储库中的文件夹,而不需要任何第三方工具,您可以使用 github 的 VS Code 扩展。

第1步在浏览器中打开您要下载的存储库的目录。

步骤 2 在网址栏中将

.com
替换为
.dev
。例如:
https://github.com/lodash/lodash
将变为
https://github.dev/lodash/lodash

第 3 步 这将打开该 git 存储库的 VS Code 界面。只需右键单击您要下载的文件夹,然后按选项中的下载即可。


2
投票

如果您想自动化这些步骤,这里的建议只能在一定程度上起作用。

我遇到了这个名为

fetch
的工具,它对我来说效果很好。您甚至可以指定版本。因此,需要一个步骤来下载并将其设置为可执行文件,然后获取所需的文件夹:

curl -sSLfo ./fetch \
https://github.com/gruntwork-io/fetch/releases/download/v0.3.12/fetch_linux_amd64
chmod +x ./fetch
./fetch --repo="https://github.com/foo/bar" --tag="${VERSION}" --source-path="/baz" /tmp/baz

1
投票

依赖性:

cURL
7-Zip

curl {url for downloading zip file} | 7z a -tzip {project name}-{branch name}/{folder path in that branch}

例如:

curl https://github.com/hnvn/flutter_shimmer/archive/master.zip | 7z a -tzip flutter_shimmer-master/examples

1
投票

还有一个不错的浏览器扩展,允许 dl 文件或文件夹


1
投票

这可能不是最有效的解决方案,但我认为它很有趣!这仅使用 bash 下载 github 上文件夹中的所有文件

(我用它来下载 postgresql 教程的文件,但没有在其他地方测试过)

curl "https://github.com/postgres/postgres/tree/master/src/tutorial" > test.html
links=$(cat test.html | grep -o \[^\"\]\*/blob/\[^\"]\*)
echo $links
echo "Now as a list.."
as_list=($links)
for (( i=0; i<${#as_list[@]}; i++ ));do
    download_link=("https://raw.githubusercontent.com${as_list[$i]}")
    echo "completing link: "
    echo "${download_link///blob/""}"
    wget "${download_link///blob/""}"
done

说明:

(1)第一行将目标文件夹下载为html,并保存为test.html

(2) 第二行提取页面上文件的所有链接。这是通过观察 html 上的文件链接看起来像“/postgres/postgres/blob/master/src/tutorial/.gitignore”来实现的,我们可以通过查找“blob”并将所有文本获取到最近的值来获取所有这些内容两边都引用“

(3) 我们把它变成一个列表

(4)为了完成工作,我们观察到文件的原始文本版本的 url 看起来略有不同,例如对于 url“/postgres/postgres/blob/master/src/tutorial/.gitignore”,原始文本文件的 url 为“https://raw.githubusercontent.com/postgres/postgres/master/src/tutorial/ .gitignore”。因此,为了处理数据,我们将“/postgres/postgres/blob/master/src/tutorial/.gitignore”转换为“/postgres/postgres/master/src/tutorial/.gitignore”,最后转换为“https://raw” .githubusercontent.com/postgres/postgres/master/src/tutorial/.gitignore”

附注抱歉,如果我的 bash 脚本很笨重 - 我是一个新的 Linux 用户


0
投票

您可以使用

git archive

git archive --remote=ssh://github.com/packageName.git HEAD path/to/my/dir | tar -x

-3
投票

您可以在克隆或下载选项(Git URL 或下载 Zip)下下载完整的文件夹

  1. 有一个下载Zip的按钮

  2. 通过使用命令,您可以在计算机上下载完整的文件夹,但为此您需要在计算机上安装 git。你可以在下面找到 Git url

    git克隆https://github.com/url


-8
投票

您也可以直接克隆存储库,克隆完成后,只需选择您想要的文件夹或文件夹即可。克隆:

git clone https://github.com/somegithubuser/somgithubrepo.git

然后转到克隆的 DIR 并找到要复制的文件或 DIR。

© www.soinside.com 2019 - 2024. All rights reserved.