【GIT】拉取大文件集仓库下的部分目录

Date: 2021.04.19
Author: jwensh

文章目录

    • 1. 背景
    • 2. 操作
      • 2.1 GIT 拉去子目录
      • 2.2 追加一个子目录

1. 背景

一些历史背景和目前的需求,有些工程从svn切换到gitlab上,出现一个问题,就是原本svn上大目录集的仓库,放到gitlab上后 ,也是一个大仓库集的,以至于clone一个好几个G容量的仓库,显得十分难受,所以,局部子目录下载,显得很方便

很早就用这个子目录下载方式了,今天就简单分享下

2. 操作

  • 目录结构假如
.
├── README.md
├── a/
│   ├── a2/
│   └── a3
├── b/
│   ├── b2
│   └──b.txt
└── c/
    ├── c2
    ├── c.txt
  • 操作仓库下的多目录,层级深浅,不是很有影响

2.1 GIT 拉去子目录

  • 1.本地在一个目录 /data/jwensh,命令行下git init实例化下项目
  • 2.然后修改配置 git config core.sparsecheckout true, 开启简介模式
  • 3.将项目下指定的文件目录路径写入到配置文件中 echo a/a2/* >> .git/info/sparse-checkout
    • a/a2/* 就是指定我们的子目录
    • 需要注意的是 这个追加字符 >> , 不要用>
  • 4.然后为这个项目添加一个远程仓库 git remote add origin https://git.jwensh-inc.com/jwensh/jwensh.git
  • 5.然后拉取文件git pull origin master
  • 6.检查已有: /data/jwensh/a/a2 相关内容

基于这几个操作就能,拉去到对应子目录的数据。那这时候又想拉去其他子目录怎么办?

2.2 追加一个子目录

比如:想要再clone一个 b/
需要操作上面的 35 步骤即可

  • cd /data/jwensh
    • 注意:因为是同一个工程,需要再根目录下操作,因为下面命令是相对路径
  • 3.将项目下指定的文件目录路径写入到配置文件中 echo b/* >> .git/info/sparse-checkout
  • 5.然后拉取文件git pull origin master

你可能感兴趣的:(#,GIT,git,gitlab,clone)