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