网站首页 > 技术文章 正文
1、背景
工作中,总是会有一些特殊需求或场景,只希望从Git的远程仓库里检出或拉取指定的文件夹或部分文件出来。Git 1.7.0后,可以使用Sparse Checkout(稀疏检出)模式实现。
2、什么是Git
Git是一种版本控制系统,它可以记录文件在不同时间点的版本变化并且跟踪文件的更改历史。它最初是由Linus Torvalds为了管理Linux内核的开发而创建的。现在,Git已经成为了许多开发者进行协作开发和版本控制的首选工具之一。
Git具有分支管理、代码合并等丰富的功能,可以帮助团队协同工作,提高项目的质量和效率。
3、操作步骤
3.1、新建项目目录
如果Windows操作系统,同时装了Git Bash的话,也可以打开Git Bash执行命令
# 在D:/temp打开命令行窗口或Git Bash,新建项目x-archive目录,并进入到x-archive目录下
mkdir x-archive && cd x-archive
3.2、初始化本地仓库
git init
Initialized empty Git repository in D:/temp/x-archive/.git/
3.3、添加绑定远程仓库
git remote add -f main https://gitee.com/xxx/x-archive.git
Updating main
remote: Enumerating objects: 52, done.
remote: Counting objects: 100% (52/52), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 52 (delta 9), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (52/52), done.
From https://gitee.com/xxx/x-archive
* [new branch] main -> main/main
* [new tag] V1.0.0 -> V1.0.0
* [new tag] V1.0.1 -> V1.0.1
执行后会列出远程仓库中的分支以及版本号等信息,分支名称等信息后面会用到
3.4、设置稀疏检出模式
设置sparse checkout稀疏检出模式,允许检出在下一步指定的文件夹或部分文件
git config core.sparsecheckout true
3.5、指定要检出的文件夹或部分文件
# 指定检出archive/config目录下的application.yaml,可以使用通配符,比如*,也可以使用!表示反选,
# 例如 archive/或archive 表示可以检出archive目录下所有文件夹和文件
echo archive/config/application.yaml >> .git/info/sparse-checkout
可以查看设置的内容
# Windows操作系统如果使用Git Bash打开命令窗口,也可以执行下面命令查看
cat .git/info/sparse-checkout
archive/config/application.yaml
3.6、检出的指定的文件夹或部分文件
# 从远程仓库main的main分支中检出指定的文件夹或部分文件
git fetch
git pull main main
From https://gitee.com/xxx/x-archive
* branch main -> FETCH_HEAD
支持tree的控制台(git bash可能需要另外安装,window或linux控制台)可以直接使用tree命令查看检出的文件夹或文件
# 在window的控制台中,进入到项目目录,输入tree /F命令
D:\temp\x-archive>tree /F
D:.
└─archive
└─config
application.yaml
4、参考
参考文章:Git拉取指定文件或者文件夹_git只拉取指定文件夹-CSDN博客
Git官网:Git
猜你喜欢
- 2025-06-30 记录一次彻底清除挖矿病毒(挖矿 清退)
- 2025-06-30 linux计划任务管理(linux计划任务设置)
- 2025-06-30 Linux基本命令—修改命令别名(linux永久修改别名)
- 2025-06-30 CentOS nodejs环境配置(centos nodejs安装)
- 2025-06-30 一文带你掌握shell脚本中的if条件语句,轻松搞定工作需求
- 2025-06-30 如何在Shell中使用加密密码 ?Linux 进阶收藏!
- 2025-06-30 为 RabbitMQ 服务器启用 SSL/TLS(rabbitmq服务启动几秒停止)
- 2025-06-30 Shell脚本关于循环的一些总结(shell 脚本 循环)
- 2025-06-30 Elasticsearch 的用户名和密码设置
- 2025-06-30 苹果为 OS X 发布 bash 更新:修复 Shellshock 漏洞
- 1506℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 493℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 484℃MySQL service启动脚本浅析(r12笔记第59天)
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 458℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 442℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 421℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)