From 6b95039e0baf634d44066105afec8f2e878e8916 Mon Sep 17 00:00:00 2001 From: 8ga Date: Mon, 5 Jan 2026 10:35:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index aa086a5..bc8cf69 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ -一个文档仓库 \ No newline at end of file +## 使用 Git 克隆远程仓库部分目录 + +``` +git clone --filter=blob:none --sparse https://远程仓库地址.git +``` + +``` +git sparse-checkout set 你需要克隆的目录名称/ +``` + +Git 对象数据库存储三种信息:blob、tree、commit,每一次 commit 都会生成一个 SHA-1 哈希值。 +- blob:文件内容 +- tree:目录结构(文件夹) +- commit:快照、元数据、父提交 +三种数据对象通过哈希值相互引用,形成了一个 DAG(有向无环图)构成 Git 版本历史。 + +> 但是 Git 对象数据库是不存在物理删除的,即便你将源文件删了(除非删库)。这就是为什么 commit 越多,仓库克隆也越来越慢的原因,如果被克隆的仓库存放大量的文档,克隆就更慢了,因为对象数据库里的 blob 对象太大了。自 2.25+ 版本开始支持浅层克隆,可以仅克隆远程仓库部分目录,缓解问题。 \ No newline at end of file