在进行项目开发的时候,有时候会有这样的需求:我们只希望从Git仓库里拉取指定的文件或者文件夹出来。在SVN里面,这非常容易实现,因为SVN基于文件方式存储,而Git却是基于元数据方式分布式存储文件信息的,它会在每一次Clone的时候将所有信息都取回到本地,即相当于在你的机器上生成一个克隆的版本库。
在Git1.7.0以前,这无法实现,但是在Git1.7.0以后加入了Sparse Checkout模式,这使得Check Out指定文件或者文件夹成为可能。
具体实现如下:(注意以下命令只能在git bash下有效)
mkdir gitSparse
cd gitSparse/ //切换到仓库目录
git init //初始化本地空仓库
git remote add -f origin git@IP:XXX.git //关联远程git仓库
git config core.sparsecheckout true //开启Sparse Checkout模式
echo "文件名" >> .git/info/sparse-checkout //直接从项目目录下开始,将需要下载的文件路径加入到配置文件,需要添加多个则多写一条记录
echo “文件夹名/文件名” >> .git/info/sparse-checkout
echo “文件夹名” >> .git/info/sparse-checkout
git pull origin master 或是直接 git checkout branch(分支的名字) //拉取需要的远程文件,注意此命令只能在git bash有效果,不然会报错