本文最后更新于 2019-04-10【77 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

Git 是个好东西,Linus 大神的小作品,版本跟踪,分支控制管理的神器。Github 也是个神器,一堆开源代码随意取用。然而,有时候,某个代码是个集合,又或者太大,我们只需要其中的一部分,比如某个文件或者某个文件夹,不必下载整个仓库,只需要利用一些小技巧下载需要的部分即可。

Github - Quanyin说:imtqy.com

下载单个文件

从 github 这里代码托管网站上下载单个文件比较简单,直接找到需要的文件,然后点击右上角的 raw或者 Download,即可以得到源文件,然后下载即可。

更进一步,https://raw.githubusercontent.com/{username}/{repo}/{branch}/{file_path}/{file_name}是源路径,使用 wget、curl、或者其他的下载工具直接下载即可,其中,{username}{repo}{branch}{file_path}{file_name}分别是 github 用户名、repo 名、分支(一般是 master)、文件路径和文件名。

下载文件夹

此方法亲测好评!

如果是想要下载某个文件夹的话,上述方法可能就不是最好的办法了,一个更好的办法是利用 svn 即可。
如想要下载 {username}{repo} 里的 {dir} 文件夹,即
如果是下载https://github.com/{username}/{repo} 主分支 master 下面的 {dir}文件夹,其浏览器路径是https://github.com/{username}/{repo}/tree/master/{dir},只需将 /tree/master/ 换成 /trunk/ 然后用 svn 下载,即:

svn checkout https://github.com/{username}/{repo}/trunk/{dir}

如果下载特定分支 {branch_name} 下面的文件夹,只需要将 /trunk/ 换成 /branches/{branch_name}/ 就行了。

Chrome 插件

借助 Chrome 插件,可以实现直接下载文件夹,相关的插件有:GitZip for github、Octotree、Octo Mate 等

高版本 Git

这个方法稍微有点繁琐,但其好处是无需借助其他的第三方工具就能实现。

Git 1.7.0 以后加入了 Sparse Checkout 模式,这使得 Check Out 指定文件或者文件夹成为可能。具体实现方法如下:

  1. 首先创建一个空的本地仓库,同时将远程 Git Server URL 加入到 Git Config 里面去

    mkdir project_folder
    cd project_folder
    git init
    git remote add -f origin <url>
  2. 在 Config 中设置允许使用 Sparse Checkout 模式

    git config core.sparsecheckout true
  3. 编辑 .git/info/space-checkout 文件,告诉 Git 你需要哪些文件或者文件夹,写入其中即可
  4. 最后,以正常方式从服务器下 pull 下来即可

    git pull origin master --depth=1

参考

文章目录

推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:如何从 Github 上下载单个文件夹? - https://www.imtqy.com/how-to-download-dir-from-github.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!