0.问题背景
在使用github时,经常会碰到项目文件很多、很大,需要下载一部分文件/文件夹的情况;或者是项目二进制文件较多,历史记录数据很大,直接git clone的话,会下载很久。这时候就需要部分下载或者只下载当前文件快照。
1.使用Octotree下载部分文件
如果下载文件比较少,可以直接安装octotree插件,点击即可下载。
github链接:https://github.com/ovity/octotree
插件链接(需要外网):https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc?hl=en-US
2.利用Sparse Checkout模式下载部分文件/文件夹
参考:
# 创建空文件夹
mkdir directoryName
cd directoryName
# 创建一个空的本地仓库
git init
# 连接远程仓库,使用.git形式的clone链接
git remote add origin -f repoUrl
# 开启sparse checkout 模式
git config core.sparsecheckout true
# 告诉git哪些文件或者文件夹是你真正想check out的
# 也可直接在对应文件夹新建sparse-checkout文件并编辑
echo somefile.csv>>.git/info/sparse-checkout
echo somefolder>>.git/info/sparse-checkout
# 拉取想要的分支
git pull origin master
测试发现,在进行 git remote add origin -f repoUrl 这一步时,需要进行Updating origin,当历史记录较多时耗时较长,因为需要读取所有的记录。
3.使用git clone --depth下载当前快照文件
当我们只需要当前快照文件,而不需要历史记录的时候可以使用这种方法。
# 使用.git形式的链接
git clone --depth=1 repoUrl
这种方式称为"shallow clone",“浅克隆”,通过这种方式clone的,无法进行commit/push。
实测这种方式相比上面的方法2速度会更快一些!
4.直接点击Clone or download按钮下载zip
在project页面直接点击Clone or download按钮,选择Download ZIP,会直接下载当前最新版本的代码zip压缩包(没有.git文件部分),下载完成之后直接解压即可。这种方法和方法3的结果相同,但是会更方便!