git克隆 不带目录_如何克隆仅Git存储库的子目录?

本文介绍了如何使用git的--filter选项克隆仅包含特定子目录的Git存储库,详细展示了本地测试过程,包括设置和命令示例。通过这种方法,可以减少下载的数据量,但目前仍存在一些限制,例如--filter=tree:0的功能尚在开发中。
摘要由CSDN通过智能技术生成

git clone --filter 来自Git 2.19

此选项实际上将跳过从服务器获取不需要的对象:git clone --depth 1 --no-checkout --filter=blob:none \

"file://$(pwd)/server_repo" local_repocd local_repogit checkout master -- mydir/

服务器应配置为:git config --local uploadpack.allowfilter 1git config --local uploadpack.allowanysha1inwant 1

扩展了Git远程协议以支持v2.19.0中的此功能,但当时没有服务器支持。但它已经可以在本地测试了。

TODO:--filter=blob:none跳过所有blob,但仍然获取所有树对象。但是在正常的回购中,与文件本身相比,这应该很小,所以这已经足够了。询问:https://www.spinics.net/lists/git/msg342006.html Devs回复了一个--filter=tree:0正在开展的工作。

请记住,--depth 1已经暗示--single-branch,另请参阅:如何在Git中克隆单个分支?

file://$(path)需要克服git clone协议恶作剧:如何使用相对路径浅层克隆本地git存储库?

格式--filter记录在上面man git-rev-list。

Git树上的文档:

测试一下#!/usr/bin/env bashset -eulist-objects() (

git rev-list --all --objects

echo "master commit SHA: $(git log -1 --format="%H")"

echo "mybranch commit SHA: $(git log -1 --format="%H")"

git ls-tree master

git ls-tree mybranch | grep mybranch

git ls-tree master~ | grep root)# Reproducibility.export GIT_CO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值