简体中文 ▾
git-backfill 手册的本地化版本
主题 ▾
最新版本 ▾ git-backfill 最后更新于 2.52.0
git-backfill 手册中的更改
设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
-
2.52.0
2025-11-17
- 2.49.1 → 2.51.2 无更改
-
2.49.0
2025-03-14
描述
使用 git clone --filter=blob:none 创建无 blob 的部分克隆,然后配置本地仓库,使 Git 客户端除非需要 blob 对象进行本地操作,否则会避免下载它们。最初,这表示克隆和后续的 fetch 会下载可达的 commit 和 tree,但不会下载 blob。后来,改变 HEAD 指针的操作,例如 git checkout 或 git merge,可能需要下载缺失的 blob 才能完成其操作。
在最坏的情况下,计算 blob 差异的命令(如 git blame)会变得非常慢,因为它们会以单 blob 请求的方式下载缺失的 blob,以满足 Git 命令在需要时对缺失对象的访问。这会导致多个下载请求,并且 Git 服务器无法对这些对象进行增量压缩。
git backfill 命令提供了一种方式,供用户请求 Git 下载缺失的 blob(带有可选过滤器),以便可以批量下载代表文件历史版本的缺失 blob。backfill 命令试图通过将出现在同一路径下的 blob 分组来优化请求,从而有望在服务器发送的 packfile 中实现良好的增量压缩。
通过这种方式,git backfill 提供了一种机制,可以将一个大的克隆分解成更小的块。从使用 git clone --filter=blob:none 的无 blob 部分克隆开始,然后在本地仓库中运行 git backfill,可以以比克隆时下载整个仓库更少的网络调用次数,下载所有可达的对象。
默认情况下,git backfill 会下载从 HEAD commit 可达的所有 blob。可以使用各种选项来限制或扩展此集合。
此命令是实验性的。其行为可能在未来发生更改。