Git只克隆远程仓库的某一个目录或文件

您所在的位置:网站首页 git拉取指定文件 Git只克隆远程仓库的某一个目录或文件

Git只克隆远程仓库的某一个目录或文件

2024-06-05 20:15| 来源: 网络整理| 查看: 265

一、研究背景

最近需要查看之前写的代码,需要从远程仓库拉取项目,但仓库项目太大直接克隆的话,下载时间比较慢,因此研究如何使用git只克隆需要的目录文件。下面是查看目录文件大小的命令:

# 查看.git文件的大小 du -sh .git # 查看当前项目目录的大小 du -sh . # 列出当前目录所有文件及大小 du .

下图是一个仓库的直接git克隆测试,发现项目.git文件大小为4.2M,整个项目目录大小为9.9M。

但是我们并不要远程仓库项目的所有文件,那应该怎么实现只克隆某一个目录或文件呢?

二、实践步骤

要实现只克隆某一个目录或文件,可以使用Git提供的方法,包括稀疏克隆和sparse-checkout操作。

2.1、稀疏克隆

过滤掉Blob文件,可以减少git克隆时的下载量。

# 过滤掉blob文件 git clone --filter=blob:none --sparse

--filter=blob:none:指定克隆过程中不包含任何 blob 对象(文件内容),只克隆 commit 对象、tree 对象、tag对象。这可以大大减少克隆操作所需要的时间和存储空间,特别适用于大型仓库,减少不必要的数据传输和占用空间。

--sparse:该参数告诉 Git 使用稀疏(sparse)克隆的方式来克隆仓库。稀疏克隆是一种仅克隆部分文件和目录的方式,而不是将整个仓库都完整地克隆下来,有助于减少克隆所需的时间和空间。

该命令的含义是开启git稀疏克隆,并下载除了具体的文件内容Blob对象之外的其他对象文件,包括tree对象、commit对象、tag对象,以保证git历史记录和项目目录结构的完整性。这样可以实现快速、高效地克隆大型仓库,并节省存储空间。在过滤掉Blob文件后,只包含了一小部分文件,整个克隆下载的来的项目大小只有428k。但是并没有包含我们需要的目录或文件。

2.2、指定拉取(sparse-checkout)

使用git sparse-checkout命令来指定从git远程仓库拉取我们所需要的目录或文件到工作目录中,执行以下命令:

# 指定git拉取的目录文件 git sparse-checkout add # 或者 git sparse-checkout set

添加front-end/seven-house-manage/src/views/dashboard之后,本地项目目录就会出现front-end/*相关文件,项目目录大小为576k,如下图所示。到这里基本就实现了git只拉取某一个目录或文件。

设置关注的目录,之前下载关注的front-end/seven-house-manage/src/views/dashboard就会被删掉,转到src目录下我们可以执行git相关操作并不会受到影响,包括打标签、新建分支、提交代码等。

# 设置关注的目录 git sparse-checkout set

2.3、文件对象

如果你想要查看文件对象类型或其他信息,可以使用以下命令:

# 查看特定文件的对象类型和哈希值 git cat-file -p HEAD:

将 替换为你要查看的文件的路径。

# 查看特定文件所在目录的内容 git ls-tree HEAD

将 替换为你要查看的目录的路径。

三、参考文献

【GitFAQ-如何在一个大型项目中只克隆一个目录】

Git - git-sparse-checkout Documentation (git-scm.com)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3