如何从仓库里拉取指定的部分目录和文件呢?本文教你如何使用git的Sparse Checkout模式:
- git config --global core.sparsecheckout true 启用Sparse Checkout模式;
- 先用git init创建个空白的本地仓库;
- 再使用git remote add origin 添加远程仓库;
- 在.git/info/sparse-checkout文件里指定需要的部分文件或文件夹,一行表示一项;
- git pull origin master 以正常的命令拉取即可。
#/bin/bash
SUB_PATH="mycode"
REMOTE_URL=git@172.16.xx.xxx:mycode/test.git
CHECKOUT_LIST=".gitignore tempdir1 tempdir2 filename1 filename2"
#新建存放代码的目录
if [ ! -d ${SUB_PATH} ]; then
mkdir ${SUB_PATH}
fi
cd "${SUB_PATH}"
#启用Sparse Checkout模式
git config --global core.sparseCheckout true
#判断本地仓库是否存在
if [ ! -d ".git" ]; then
git init #不存在,先用git init创建个空白的本地仓库
git remote add origin "${REMOTE_URL}" #添加远程仓库
for i in ${CHECKOUT_LIST}; do
echo ${i} >> ".git/info/sparse-checkout" #在.git/info/sparse-checkout文件里指定需要的部分文件或文件夹
done
else #本地仓库存在,修改.git/info/sparse-checkout文件
for i in ${CHECKOUT_LIST}; do
if [ `grep -c ${i} ".git/info/sparse-checkout"` -eq '0' ]; then #判断之前是否已经写入该文件或目录,grep -c 返回一个文件中字符串的个数
echo ${i} >> ".git/info/sparse-checkout"
fi
done
fi
# git fetch
# git reset --hard origin/master
git pull origin master #拉取代码
#end