从github下载单独文件的两种方式
2018-08-16 本文已影响39人
快乐的老船长
一、通过git方式
在Git1.7.0以后加入了Sparse Checkout模式,这使得Check Out指定文件或者文件夹成为可能。
- 指定远程仓库
- 指定克隆模式: Sparse Checkout模式
- 指定克隆的文件夹(或者文件)
- 拉取远程文件
下面以克隆SMSSDK下的 /SDK/SMSSDK 目录为例。
$ mkdir SMSSDK
$ cd SMSSDK
$ git init // 初始化空仓库
$ git remote add -f origin https://github.com/MobClub/SMSSDK-for-iOS.git // 关联远程地址
$ git config core.sparsecheckout true // 开启Sparse Checkout模式
$ echo "SDK/SMSSDK" >> .git/info/sparse-checkout // 设置需Check Out的文件
$ git pull origin master // Check Out
image.png
.git文件比较大
附:shell调用的脚本 下载地址:https://github.com/JinhuiLu/SparseCheckout.git
#!/bin/sh
UPDATE=${1}
RESPOSITORY_PATH=${2}
REMOTE_URL=${3}
COMMIT_BRANCH=${4}
CHECKOUT_LIST=${@:5:$#-4}
cd "${RESPOSITORY_PATH}"
git config --global core.sparseCheckout true
if [ ! -d ".git" ]; then
git init
git remote add origin "${REMOTE_URL}"
for i in ${CHECKOUT_LIST}; do
echo ${i} >> ".git/info/sparse-checkout"
done
git pull origin "${COMMIT_BRANCH}" --depth=1
else
for i in ${CHECKOUT_LIST}; do
if [[ `grep -c ${i} ".git/info/sparse-checkout"` -eq '0' ]]; then
echo ${i} >> ".git/info/sparse-checkout"
else
echo "Found! ${i}"
fi
done
fi
if [[ ${UPDATE} = "ture" ]]; then
git pull origin "${COMMIT_BRANCH}" --depth=1
fi
git checkout -qf master
使用说明:
isUpdate:true 或者 false
localPath: 要下载到的路径
remotePath: 远程地址,可以是http,可以是git等
master/branch: 主线或者分支
checkout-List: 要checkout的路径列表,可以传多个,支持通配符 "*"
$ sh SparseCheckout.sh isUpdate localPath remotePath master/branch checkout-List
例子:
$ sh SparseCheckout.sh true /User/lujh/MobProducts/SMSSDK https://github.com/MobClub/SMSSDK-for-iOS.git master SDK/SMSSDK/SMS_SDK.framework SDK/Required/*
二、通过svn方式
打开SMSSDK目录得到地址:
https://github.com/MobClub/SMSSDK-for-iOS/tree/master/SDK/SMSSDK
改tree/master为trunk -->
https://github.com/MobClub/SMSSDK-for-iOS/trunk/SDK/SMSSDK
$ svn checkout https://github.com/MobClub/SMSSDK-for-iOS/trunk/SDK/SMSSDK //直接Checkout即可
image.png
.svn只是单个文件的,不太大,操作方便