如何从github中克隆指定文件夹

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

一般来说,我们使用git clone <url> 是会克隆整个堆栈下来的,但是某些时间我们大概只需要堆栈中的某个/某几个文件夹即可,从而避免下载许多冗余的内容
Git 2.25.0 (Jan 2020)提供了sparse-checkout来实现此内容,一下给出详细代码以及解释。为了方便我将其封装成了脚本,实际运行的时间写进.sh文件中即可
  1. #! /bin/bash
  2. tar="$1" localdir="$2" && shift 2
  3. # 参数定义并移除前两个参数
  4. mkdir -p "$localdir"
  5. cd "$localdir"
  6. git clone -n --depth=1 --filter=tree:0 "$tar"
  7. # -n 不进行文件检出 --depth=1 只克隆最近一次提交 --filter=tree:0 只克隆目录结构,不下载实际内容
  8. rep=$(basename "$tar" .git)
  9. # echo "$rep"
  10. cd "$rep"
  11. git sparse-checkout init
  12. # 初始化 Git 的sparse-checkout,允许只检出仓库中部分目录或文件
  13. git sparse-checkout set --no-cone "$@"
  14. # 指定要检出的文件或目录,$@给出所有参数,注意别用$*
  15. # echo "$@"
  16. git checkout
复制代码
Usage:
  1. ./git_sparse_clone https://github.com/gutouyu/ML_CIA.git ./try "Wide&Deep" "DCN"
复制代码
这里我将代码写进了git_sparse_clone.sh中,前两个参数分别指代目标堆栈url以及当地要创建的堆栈所在,之后是要克隆的文件夹(们),执行之后就会只克隆第三个参数起指定的目次
注意这个方法对单个文件大概没用,对应步伐可以看看这里

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表