克隆部分文件 - morris131/morris-book GitHub Wiki

Git克隆部分文件

需求

只希望从Git仓库里取指定的文件或者文件夹出来。在SVN里面,这非常容易实现,因为SVN基于文件方式存储,而Git却是基于元数据方式分布式存储文件信息的,它会在每一次Clone的时候将所有信息都取回到本地,即相当于在你的机器上生成一个克隆版的版本库。

解决方案

在Git1.7.0以前,这无法实现,但是幸运的是在Git1.7.0以后加入了Sparse Checkout模式,这使得Check Out指定文件或者文件夹成为可能。

实例

下面以克隆开源项目druid下的/druid/doc目录为例。

$ mkdir druid
$ cd druid  
$ git init // 初始化空仓库
$ git remote add -f origin https://github.com/alibaba/druid.git // 关联远程地址
$ git config core.sparsecheckout true // 开启Sparse Checkout模式
$ echo "druid/doc" >> .git/info/sparse-checkout // 设置需Check Out的文件
$ git pull origin master // Check Out
... ...

总结

  1. 指定远程仓库
  2. 指定克隆模式: 稀疏克隆模式
  3. 指定克隆的文件夹(或者文件)
  4. 拉取远程文件
⚠️ **GitHub.com Fallback** ⚠️