git pull 某一个文件或文件夹

QQ: 2967732156
背景:

在使用Oracle VM VirtualBox,进行Linux开发时,随着使用内存越来越少,空间已不足拉取整个代码库。

Ubuntu1604内存够,Ubuntu18.04内存不够。

思路:

第一步:从问题本身出发,先能满足编译需要。

方法1,手动从Ubuntu16.04上拉取最新代码,删掉不需要的文件,仅保留Ubuntu18.04需要,然后一次scp

方法2,从Ubuntu16.04上拉取最新代码,在Ubuntu18.04,多次scp所需文件

第二步:考虑自动化脚本。

方法1:从Ubuntu16.04上拉取最新代码,Ubuntu18.04上编写脚本一次执行,传输所需文件

方法2:打个疑问“git 能不能实现文件或文件夹的拉取,而且只拉取最新的?” 查阅资料,整理解决方案并验证

方法:
建立一个空的git 本地仓库:
$ git init new.project && cd new.project在本地仓库里面启用sparse-checkout:
$ git config core.sparseCheckout true设定你要checkout 哪些文件夹(如/xxx/*表示xxx文件夹下所有文件)(也可以用vim直接打开 .git/info/sparse-checkout写入)
$ echo '/xxx/*' >> .git/info/sparse-checkout设定remote (要从哪里clone/pull?):
$ git remote add origin git://github.com/xxx/xxx.git然后就可以开始pull 了(这边可以加上后面说的shallow pull,加上–depth=n
$ git pull origin master
整理:

命令行方式

git init project && cd project
git config core.sparseCheckout true
git remote add origin ssh://neal.shen@XXX.XXX.XXX.XXX:XXXXXX/SDK/SDK.git 
echo '/complieLinux.sh' >> .git/info/sparse-checkout
echo '/sources/include/*' >> .git/info/sparse-checkout
echo '/sources/config/*' >> .git/info/sparse-checkout
echo '/sources/json/*' >> .git/info/sparse-checkout
echo '/sources/log/*' >> .git/info/sparse-checkout
echo '/sources/sensor/*' >> .git/info/sparse-checkout
echo '/sources/platforms/*' >> .git/info/sparse-checkout
echo '/sources/src/*' >> .git/info/sparse-checkout
echo '/sources/3rdparty/libjpeg-turbo-2.0.2/*' >> .git/info/sparse-checkout
echo '/sources/3rdparty/opencv/bulid/include_3.4.16/*' >> .git/info/sparse-checkout
echo '/sources/3rdparty/opencv/bulid/x64/ubuntu18.04/lib_3416/*' >> .git/info/sparse-checkout
echo '/sources/3rdparty/algorithm/PC_ImgPreProc/ImgPreProcess/*' >> .git/info/sparse-checkout
echo '/sources/3rdparty/algorithm/imgpreproc/include/*' >> .git/info/sparse-checkout录取全部记录
git pull origin v3只拉取最近一次的变更,忽略以前的变更记录,在拉取时可以加参数depth
git pull --depth=1 origin v3

sparse-checkout文件内容:

/complieLinux.sh 
/sources/include/* 
/sources/config/* 
/sources/json/* 
/sources/sensor/* 
/sources/platforms/* 
/sources/3rdparty/libjpeg-turbo-2.0.2/* 
/sources/3rdparty/opencv/bulid/include_3.4.16/* 
/sources/3rdparty/opencv/bulid/x64/ubuntu18.04/lib_3416/* 
/sources/3rdparty/algorithm/PC_ImgPreProc/ImgPreProcess/* 
/sources/3rdparty/algorithm/imgpreproc/include/* 

优化:

使用python编写build.py

# coding:utf-8
########################################################################
# File Name: build.py
# Purpose: git 拉取单个文件或特定文件夹
# Usage: python build.py
# Author: Neal
# Mail: 2967732156@qq.com 
# Created Time: 2023
#########################################################################import 引入模块  相当于inclued + 导入外部库吧
#os 模块提供了非常丰富的方法用来处理文件和目录
import os
print ('start')
def gitpull():os.system('git init project')os.chdir('project')os.system('git config core.sparseCheckout true')os.system('git remote add origin ssh://neal.shen@XXX.XXX.XXX.XXX:XXXXXX/SDK/SDK.git ')os.system('echo /complieLinux.sh >> .git/info/sparse-checkout')os.system('echo /sources/include/* >> .git/info/sparse-checkout')os.system('echo /sources/config/* >> .git/info/sparse-checkout')os.system('echo /sources/json/* >> .git/info/sparse-checkout')os.system('echo /sources/log/* >> .git/info/sparse-checkout')os.system('echo /sources/sensor/* >> .git/info/sparse-checkout')os.system('echo /sources/platforms/* >> .git/info/sparse-checkout')os.system('echo /sources/src/* >> .git/info/sparse-checkout')os.system('echo /sources/3rdparty/libjpeg-turbo-2.0.2/* >> .git/info/sparse-checkout')os.system('echo /sources/3rdparty/opencv/bulid/include_3.4.16/* >> .git/info/sparse-checkout')os.system('echo /sources/3rdparty/opencv/bulid/x64/ubuntu18.04/lib_3416/* >> .git/info/sparse-checkout')os.system('echo /sources/3rdparty/algorithm/PC_ImgPreProc/ImgPreProcess/* >> .git/info/sparse-checkout')os.system('echo /sources/3rdparty/algorithm/imgpreproc/include/* >> .git/info/sparse-checkout')os.system('git pull --depth=1 origin v3')
gitpull()
print ('end')
补充知识点:

python os.system("cd 目录") 不起效

使用os提供的os.chdir(‘目录’)

总结:

Ubuntu18.04已验证OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/38898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TB/TM-商品详情原数据(APP)

一、接口参数说明: item_get_app-获得TB/TMapp商品详情原数据,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_app 名称类型必须描述keyString是调用key&…

考研 408 | 【计算机网络】 应用层

导图 网络应用模型 客户/服务器(c/s)模型 P2P模型 DNS 域名 域名服务器 域名解析过程 文件传输协议FTP FTP服务器和用户端 FTP工作原理 电子邮件 电子邮件的信息格式 组成结构 邮件服务器的功能: 1.发送&接收邮件 2.给发件人报告邮…

使用windows Api简单验证ISO9660文件格式,以及装载和卸载镜像文件

使用IIsoImageManager接口简单验证ISO镜像文件正确性,使用AttachVirtualDisk装载ISO镜像文件,和使用DetachVirtualDisk卸载,(只支持windows 8及以上系统) 导读 IIsoImageManager 验证ISO文件正确性AttachVirtualDisk 装载镜像文件DetachVirtualDisk 卸载镜像文件其他相关函…

《游戏编程模式》学习笔记(四) 观察者模式 Observer Pattern

定义 观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 这是定义,看不懂就看不懂吧,我接下来举个例子慢慢说 为什么我们需要观察者模式 我们看一个很简…

PAT (Advanced Level) 甲级 1004 Counting Leaves

点此查看所有题目集 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one test case. Each case starts with a line containing 0<N<100, …

如何在iPhone手机上修改手机定位和模拟导航?

如何在iPhone手机上修改手机定位和模拟导航&#xff1f; English Location Simulator&#xff08;定位模拟工具&#xff09; 是一款功能强大的 macOS 应用&#xff0c;专为 iPhone 用户设计&#xff0c;旨在修改手机定位并提供逼真的模拟导航体验。无论是为了保护隐私、测试位…

Angular 独立组件入门

Angular 独立组件入门 如果你正在学习 Angular&#xff0c;那么你可能已经听说过独立组件&#xff08;Component&#xff09;。顾名思义&#xff0c;独立组件就是可以独立使用和管理的组件&#xff0c;它们能够被包含在其他组件中或被其他组件引用。 在本文中&#xff0c;我们…

【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置

♥️作者&#xff1a;白日参商 &#x1f935;‍♂️个人主页&#xff1a;白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

go-安装部署

一、安装go 详细安装方式可以查看官网 # 下载 wget https://golang.google.cn/dl/go1.21.0.linux-amd64.tar.gz # 解压缩 tar -xzf go1.21.0.linux-amd64.tar.gz # 迁移目录 mv go /usr/local # 配置环境变量 export PATH$PATH:/usr/local/go/bin # 检查go的版本 go version有…

Python中的字符串与字符编码

Hello&#xff0c;这里是Token_w的博客&#xff0c;欢迎您的到来 今天文章讲解的是Python中的字符串与字符编码&#xff0c;其中有基础的理论知识讲解&#xff0c;也有实战中的应用讲解&#xff0c;希望对你有所帮助 整理不易&#xff0c;如对你有所帮助&#xff0c;希望能得到…

PDM/PLM系统建设

仅供学习使用&#xff0c;会随时更新 工程机械跨生命周期数据管理系统 来源&#xff1a;清华大学 浅论企业PDM/PLM系统建设成功经验 来源&#xff1a;e-works 作者&#xff1a;陈凡 https://articles.e-works.net.cn/pdm/article149572.htm 随着“中国制造2025”强基工程战略的…

张俊林:由ChatGPT反思大语言模型(LLM)的技术精要

转自&#xff1a;https://mp.weixin.qq.com/s/eMrv15yOO0oYQ-o-wiuSyw 导读&#xff1a;ChatGPT出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型&#xff08;LLM,Large Language Model&#xff09;效果能好成这样&#xff1b;惊醒是顿悟到我们对LLM的认知及发展理念&a…

Elisp之获取PC电池状态(二十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Linux学习笔记

grep -r "root" /var/log/messages #查找一个目录下所有包含特定字符窜的文件 grep -r "root" /var/log/messages |wc -l #如何计算一个文本文件中某个单词出现的次数&#xff1f; du -sh /var/log #如何统计一个目录下所有文件和子目录的总大小&#xff1…

博客摘录「 佛祖保佑,永无bug——springboot启动图案的修改方法」2023年6月8日

挺有意思的。佛祖保佑永无BUG 神兽护体 代码注释(各种版本)_风流 少年的博客-CSDN博客

ArcGIS Pro 基础安装与配置介绍

ArcGIS Pro ArcGIS Pro作为ESRI面向新时代的GIS产品&#xff0c;它在原有的ArcGIS平台上继承了传统桌面软件&#xff08;ArcMap&#xff09;的强大的数据管理、制图、空间分析等能力&#xff0c;还具有其独有的特色功能&#xff0c;例如二三维融合、大数据、矢量切片制作及发布…

django中实现事务/django实现悲观锁乐观锁案例

django中实现事务的几种方式 # 1 全局开启事务---> 全局开启事务&#xff0c;绑定的是http请求响应整个过程DATABASES {default: {#全局开启事务&#xff0c;绑定的是http请求响应整个过程ATOMIC_REQUESTS: True, }}from django.db import transaction# 局部禁用事务trans…

Unity 鼠标控制 UI 放大、缩小、拖拽

文章目录 1. 代码2. 测试场景 1. 代码 using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems;public class UIDragZoom : MonoBehaviour, IDragHandler, IScrollHandler {private Vector2 originalSize;private Vector2 originalPosition;private RectTr…

css3 瀑布流布局遇见截断下一列展示后半截现象

css3 瀑布流布局遇见截断下一列展示后半截现象 注&#xff1a;css3实现瀑布流布局简直不要太香&#xff5e;&#xff5e;&#xff5e;&#xff5e;&#xff5e; 场景-在uniapp项目中 当瀑布流布局column-grap:10px 相邻两列之间的间隙为10px&#xff0c;column-count:2,2列展…

面试之快速学习C++11-完美转发,nullptr, shared_ptr,unique_ptr,weak_ptr,shared_from_this

完美转发及其实现 函数模版可以将自己的参数完美地转发给内部调用的其他函数。所谓完美&#xff0c;即不仅能准确地转发参数的值&#xff0c;还能保证被转发参数的左右值属性不变引用折叠&#xff1a;如果任一引用为左值引用&#xff0c;则结果为左值引用&#xff0c;否则为右…