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.pswp.cn/news/38898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38898.shtml
英文地址,請注明出處:http://en.pswp.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;否則為右…