作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从 git 存储库克隆、获取或稀疏 check out 单个文件或目录或文件或目录列表,以避免下载整个历史记录或至少保持历史记录下载最少?
为了登陆这里的人的利益,这些是对其他类似问题的引用:
最佳答案
此 bash
下面的函数可以解决问题。
function git_sparse_checkout {
# git repository, e.g.: http://github.com/frgomes/bash-scripts
local url=$1
# directory where the repository will be downloaded, e.g.: ./build/sources
local dir=$2
# repository name, in general taken from the url, e.g.: bash-scripts
local prj=$3
# tag, e.g.: master
local tag=$4
[[ ( -z "$url" ) || ( -z "$dir" ) || ( -z "$prj" ) || ( -z "$tag" ) ]] && \
echo "ERROR: git_sparse_checkout: invalid arguments" && \
return 1
shift; shift; shift; shift
# Note: any remaining arguments after these above are considered as a
# list of files or directories to be downloaded.
mkdir -p ${dir}
if [ ! -d ${dir}/${prj} ] ;then
mkdir -p ${dir}/${prj}
pushd ${dir}/${prj}
git init
git config core.sparseCheckout true
local path="" # local scope
for path in $* ;do
echo "${path}" >> .git/info/sparse-checkout
done
git remote add origin ${url}
git fetch --depth=1 origin ${tag}
git checkout ${tag}
popd
fi
}
这是如何使用它的示例:
function example_download_scripts {
url=http://github.com/frgomes/bash-scripts
dir=$(pwd)/sources
prj=bash-scripts
tag=master
git_sparse_checkout $url $dir $prj $tag "user-install/*" sysadmin-install/install-emacs.sh
}
在上面的例子中,注意一个目录后面必须跟着
/*
并且必须在单引号或双引号之间。
关于git - 如何从 git 存储库克隆、获取或稀疏 check out 单个目录或目录列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60190759/
我是一名优秀的程序员,十分优秀!