【Git】保姆级教程:如何在 GitHub 上传大文件(≥100M)?(含自己的操作流程)

news2024/10/7 13:25:45

文章目录

  • 一、问题导读
  • 二、自己的实际操作流程
    • 2.1 准备工作
    • 2.2 初始化仓库
    • 2.3 安装git lfs(一个仓库里面执行一次就好了)
    • 2.4 跟踪一下你要上传(push)的文件或指定文件类型
    • 2.5 添加.gitattributes
    • 2.6 添加要上传(push)的文件并提交(commit)
    • 2.7 将本地与新建仓库进行配对
    • 2.8 让上传看起来更连续,而不是多出很多无用的merge commit
    • 2.9 正式上传

一、问题导读

GitHub是我们常用的代码托管平台,但GitHub有一个限制,不能上传超过100M的文件。

如果要上传的文件超过 GitHub 的文件大小限制,你可以考虑以下方法:

  1. 使用 Git LFS:Git LFS(Large File Storage)是一个扩展工具,用于管理大文件。它允许你将大文件存储在 Git 仓库之外,并在仓库中保留文件的引用。通过使用 Git LFS,你可以上传和管理大文件,而不受 GitHub 文件大小限制的影响。
  2. 使用外部存储服务:如果你的文件非常大,超过了 Git LFS 的限制,你可以考虑使用外部存储服务,如云存储服务(如 Amazon S3、Google Cloud Storage)或文件传输服务(如 Dropbox)。你可以将文件上传到外部存储服务,然后在 GitHub 仓库中添加一个指向外部存储位置的链接或引用。

我们这里采用Git LFS扩展工具。

Git LFS(Large File Storage)是一个 Git 扩展工具,用于管理大文件。它通过将大文件存储在 Git 仓库之外,并在仓库中保留文件的引用,来解决 Git 对大文件的处理效率和限制问题。

以下是关于 Git LFS 的一些重要概念和使用方法:

  1. 安装 Git LFS:首先,你需要在本地系统上安装 Git LFS。可以从 Git LFS 官方网站(https://git-lfs.github.com/)下载适合你操作系统的安装程序,并按照说明进行安装。
  2. 初始化 Git LFS:在你的 Git 仓库中,使用以下命令来初始化 Git LFS:
git lfs install

这将在当前仓库中启用 Git LFS。

  1. 跟踪大文件:使用以下命令告诉 Git LFS 跟踪特定文件类型的大文件:
git lfs track "*.ext"

*.ext 替换为你要跟踪的文件类型的模式,例如 *.mp4*.zip。Git LFS 将会为匹配的文件类型启用跟踪。

  1. 添加和提交大文件:使用常规的 Git 命令 git add 和 git commit 将大文件添加到 Git LFS 管理中。例如:
git add large_file.ext
git commit -m "Add large file using Git LFS"

这将将大文件添加到 Git LFS 管理,并创建一个包含大文件引用的提交。

  1. 推送和拉取大文件:使用常规的 git push 和 git pull 命令来推送和拉取包含大文件的提交。Git LFS 会自动处理大文件的上传和下载。

通过使用 Git LFS,你可以更有效地管理大文件,并避免 Git 对大文件的限制和性能问题。请注意,你需要确保你的 Git 服务器和其他协作者也已正确配置和支持 Git LFS,以便顺利共享和协作处理大文件。

二、自己的实际操作流程

首先看一下我要上传的文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我有一个pretrained_ckpt的文件夹,里面有四个文件夹,每一个文件夹里面都有好多个pth大文件,我该如何上传到我的github远程仓库上呢?

下面是我的一个详细的步骤:

2.1 准备工作

  1. 在电脑中自选目录新建一个文件夹(例:F:\git文件夹\pretrained_ckpt);
  2. 在GitHub上新建一个仓库(Repositories),GitHub有官方教程;
  3. 打开Git Bash,进入刚刚新建的文件夹:
cd /f/git文件夹

在这里插入图片描述

2.2 初始化仓库

git init

git init 是一个 Git 命令,用于在当前目录中初始化一个新的 Git 仓库。通过运行该命令,Git 会在当前目录下创建一个隐藏的 .git 文件夹,用于存储仓库的相关信息和版本控制的历史记录。

如果命令执行成功,你将看到一个类似于以下内容的输出:

Initialized empty Git repository in /path/to/your/repository/.git/

在这里插入图片描述
请注意,Git 仓库中的 .git 文件夹是隐藏的,因此在文件浏览器中可能看不到它。你可以使用命令行或文件浏览器的显示隐藏文件选项来查看它。

在这里插入图片描述

2.3 安装git lfs(一个仓库里面执行一次就好了)

git lfs install

在这里插入图片描述
git lfs install 是 Git LFS(Large File Storage)的命令之一,用于在本地系统中安装 Git LFS 扩展。

下面是使用 git lfs install 安装 Git LFS 的步骤:

  1. 确保你已经在本地系统中安装了 Git。你可以在命令行终端中运行以下命令来验证是否安装了 Git:
git --version

如果已安装 Git,将显示 Git 的版本信息。如果未安装 Git,请按照适用于你操作系统的说明进行安装。

在这里插入图片描述

  1. 打开命令行终端,并进入要使用 Git LFS 的目录。

  2. 运行以下命令:

git lfs install

这将下载和安装 Git LFS 扩展,并将其配置为与 Git 一起使用。

  1. 如果安装成功,你将看到类似以下输出:
Updated git hooks.
Git LFS initialized.

这表示 Git LFS 已成功安装和初始化。

现在,你的系统已安装 Git LFS,并可以在 Git 仓库中使用 Git LFS 来管理大文件。你可以使用其他 Git LFS 命令来跟踪大文件、添加文件到 Git LFS 管理、推送和拉取文件等操作。请确保你的 Git 服务器和其他协作者也已正确配置和支持 Git LFS,以便顺利地使用 Git LFS 功能。

2.4 跟踪一下你要上传(push)的文件或指定文件类型

git lfs track "*.pth"

这将告诉 Git LFS 跟踪所有扩展名为 .pth 的文件,并使用 Git LFS 进行管理。

完成上述步骤后,Git LFS 将会跟踪并管理所有匹配 .pth 扩展名的文件。在提交、推送和拉取时,Git LFS 会相应地处理这些大文件,确保它们被正确地上传和下载。

在这里插入图片描述

2.5 添加.gitattributes

.gitattributes 是 Git 的一个配置文件,用于指定特定文件或文件类型的属性和处理方式。它可以用于定义 Git 在处理文件时的行为,例如在版本控制、合并和检出文件时的属性设置。

.gitattributes 文件的作用包括:

  1. 文件属性设置:你可以使用 .gitattributes 文件指定特定文件或文件类型的属性。例如,你可以定义某个文件应被视为二进制文件,或者使用 Git LFS 进行管理。
  2. 文本处理:.gitattributes 文件可以用于指定文本文件的行尾格式(如 CRLF 或 LF),这对于跨平台协作很有用。你可以设置文件的 text 或 binary 属性,控制 Git 是否将其视为文本文件。
  3. 合并策略:通过 .gitattributes 文件,你可以为不同类型的文件指定合并策略,以决定在合并分支时如何处理这些文件的冲突。
  4. 过滤和清理:.gitattributes 文件允许你配置 Git 过滤器,以在提交或检出文件时执行自定义的过滤和清理操作。这对于对文件进行自动处理、格式转换或敏感信息过滤很有用。

.gitattributes 文件的语法是基于模式匹配的,你可以使用通配符、正则表达式和文件路径模式来匹配文件,并为其指定相应的属性和操作。

请注意,.gitattributes 文件需要添加到 Git 仓库,并确保其他协作者在克隆或拉取仓库时能够正确应用这些属性规则。

在命令行终端中,使用 Git 命令将 .gitattributes 文件添加到仓库并提交:

git add .gitattributes

在这里插入图片描述

2.6 添加要上传(push)的文件并提交(commit)

git add .

在这里插入图片描述

git commit -m "RegionCLIP_pretrained_ckpt"

在这里插入图片描述

2.7 将本地与新建仓库进行配对

git remote add origin git@github.com:biluko/RegionCLIP_petrained_ckpt.git

在这里插入图片描述

2.8 让上传看起来更连续,而不是多出很多无用的merge commit

git pull --rebase origin master

在这里插入图片描述
git pull --rebase origin master 是一个 Git 命令,用于从远程仓库(通常是命名为 origin)拉取最新的提交,并通过变基(rebase)方式将本地的提交应用到更新后的远程分支上。

该命令的作用如下:

  1. 从远程仓库(origin)拉取最新的提交:git pull 首先会执行 git fetch,将远程仓库的最新提交下载到本地的远程跟踪分支(例如 origin/master)。
  2. 变基(rebase)本地提交:–rebase 参数告诉 Git 在将本地的提交应用到更新后的远程分支之前,先执行变基操作。变基会将当前分支的提交“重新播放”在远程分支的最新提交之上。
  3. 应用本地提交:在变基操作完成后,Git 会将本地的提交逐个应用到更新后的远程分支上。

使用 git pull --rebase origin master 命令的优势在于能够在提交历史中保持一条干净的线性历史。相比使用普通的 git pull 命令(默认使用合并方式),使用变基可以避免创建额外的合并提交,使得提交历史更加整洁。

然而,需要注意的是,当多个人同时在同一分支上工作时,使用变基操作可能会导致冲突。在进行变基操作前,请确保你的本地分支没有与远程分支冲突的提交,或者在变基后解决任何可能的冲突。

综上所述,git pull --rebase origin master 的作用是拉取远程分支的最新提交,并使用变基方式将本地提交应用到更新后的远程分支上。这有助于保持提交历史的整洁性。

2.9 正式上传

git push -u origin master

在这里插入图片描述

git push origin master

在这里插入图片描述

上传成功!

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

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

相关文章

Jmeter上传文件接口测试

Jmeter上传文件接口测试 接口测试,想必大家都做过,但是上传文件的接口,可能就不知所措。其实呢,还是那么回事~ 一、接口的业务 在接口文档缺失的前提下,那就从抓包玩起~Fiddler或者F12都可以。 本次我们接口实现的…

springboot+mysql实现特产销售平台

本次设计任务是要设计一个藏区特产销售平台,通过这个系统能够满足藏区特产销售管理的管理功能。系统的主要包括首页、个人中心、用户管理、特产信息管理、特产分类管理、特产分类管理、特产评分管理、系统管理、订单管理等功能。 管理员可以根据系统给定的账号进行登…

Graphics笔记

1.简介 Graphics是System.Drawing里面的绘图类。 2.开始绘制 2.1.创建绘图对象&#xff0c;三种方法 在窗体或控件的Paint事件中&#xff0c;用PaintEventArgs创创建绘图对象(控件或窗体重绘时&#xff09; /// <summary>/// 1.在窗体或控件的Paint事件中&#xff0c…

以数字孪生技术服务社会,推动企业高质量发展

随着“十四五”规划和2035年远景目标纲要中提出&#xff0c;要加快数字化发展&#xff0c;建设数字中国。为建设数字孪生智慧城市提供了国家战略指引。 新兴技术是数字孪生发展的助推剂&#xff0c;臻图信息通过数字孪生技术及研发的实景三维渲染引擎&#xff0c;搭载自主研发的…

IP地址【图解TCP/IP(笔记十)】

文章目录 IP地址的基础知识IP地址的定义IP地址由网络和主机两部分标识组成IP地址的分类广播地址IP多播子网掩码 IPv4首部 IP地址的基础知识 在用TCP/IP通信时&#xff0c;用IP地址识别主机和路由器。为了保证正常通信&#xff0c;有必要为每个设备配置正确的IP地址。在互联网通…

使用Gradio库进行交互式数据可视化:Timeseries模块介绍

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

计算机体系结构基础知识介绍之硬件预测(二)

一、ROB详述 指令执行的四个步骤是&#xff1a; 发射&#xff08;Issue&#xff09;&#xff1a;从指令队列中获取一条指令。如果有空闲的保留站和ROB条目&#xff0c;就发射指令&#xff1b;如果寄存器或ROB中有可用的操作数&#xff0c;就发送操作数到保留站。更新控制字段…

gigachad1靶机详解

gigachad_vh靶机详解 扫描到ip后对ip做一个全面扫描&#xff0c;发现有一个匿名服务器&#xff0c;是可以免密登陆的。 登陆上后发现就一个文件&#xff0c;get到我们电脑上。 file一下发现是一个zip文件&#xff0c;unzip解压一下&#xff0c;发现给了一个用户名chad&#xf…

ESP32设备驱动-直流电机与L298N电机驱动器

直流电机与L298N电机驱动器 文章目录 直流电机与L298N电机驱动器1、L298N介绍2、硬件准备3、软件准备4、驱动实现在本文中,我们将介绍如何使用ESP32通过L298N电机驱动器驱动直流电机。 1、L298N介绍 L298N 电机驱动器模块非常易于与微控制器一起使用,而且相对便宜。 它被广泛…

基于springboot的微信小程序宠物领养医院系统(源代码+数据库+10000字论文)085

基于springboot的微信小程序宠物领养医院系统(源代码数据库10000字论文)085 一、系统介绍 本项目有网页版和小程序端 本系统分为管理员、医生、用户三种角色 用户角色包含以下功能&#xff1a; 登录、注册、宠物领养、医生在线咨询、查看挂号、个人中心、密码修改、宠物寄…

HTTP第18讲——HTTP的缓存控制

诞生背景 由于链路漫长&#xff0c;网络时延不可控&#xff0c;浏览器使用 HTTP 获取资源的成本较高。所以&#xff0c;非常有必要把“来之不易”的数据缓存起来&#xff0c;下次再请求的时候尽可能地复用。这样&#xff0c;就可以避免多次请求 - 应答的通信成本&#xff0c;节…

测试工程师简历编写指南,送简历模板

目录 概述 简历元素 1. 基础信息 2. 个人情况 3. 教育背景 4.专业技能 5.工作经历&项目经 6. 自我评价&兴趣爱好 7. 其他内容 总结&#xff1a; 概述 在人才市场中&#xff0c;一次完整的求职过程通常包括以下阶段&#xff1a; 简历筛选电话面试笔试面谈意向…

Linux信号机制-3

转自&#xff1a;深入理解Linux内核——signals | linkthinking 信号很早就在 unix 系统中出现了&#xff0c;它用于用户进程之间的交互&#xff0c;几十年以来&#xff0c;变化都不大。信号是一个发送给进程或者进程组的消息&#xff0c;它只是一个数字&#xff0c;没有参数或…

spring AOP中pointcut表达式详解

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

纹理过滤方式

纹理坐标不依赖于分辨率&#xff0c;opengl需要知道如何将纹理像素映射到纹理坐标。 纹理像素和纹理坐标的区别&#xff1a; 纹理像素是有限的。 纹理坐标的精度是无限的&#xff0c;可以是任意的浮点值。 一个像素需要一个颜色。 因此&#xff0c;所谓采样就是通过纹理坐标获取…

图像处理之图像灰度化

图像灰度化 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定&#xff0c;而每个分量有255中值可取&#xff0c;这样一个像素点可以有1600多万 (255255255)的颜色的变化范用。而灰度图像是R、G、B三个分量相同的一种特…

分析 jsjiami.v6 代码混淆和加密技术:特点、优点和缺点

当涉及到 JavaScript 代码混淆和加密技术时&#xff0c;开发人员常常寻求方法来保护他们的代码免受逆向工程和未授权访问的威胁。这种技术可以增加代码的复杂性&#xff0c;使其难以理解和修改&#xff0c;同时也可以隐藏关键信息和保护数据的安全性。本文将探讨 JavaScript 代…

echarts在vue上使用模版可粘贴!!!一站式搞定以及动态数据渲染关键问题解决(附带模版)

阿丹&#xff1a; 之前的项目中涉及到echarts都是使用jsp写的&#xff0c;但是现在越来普及vue。所以使用在vue上使用echarts就成了问题。 导入相关依赖 在官网上面有说明npm安装Echarts依赖 在vue中使用Echarts 上模版!!!!!!!!!!!!使用了mounted&#xff08;&#xff09;这个…

在使用yum时报错Loaded plugins: fastestmirror

在使用yum时报错Loaded plugins: fastestmirror 在我安装更高版本的gcc编译器时&#xff0c;发现了这个问题 意思是加载插件&#xff0c;加载后面两个插件&#xff0c;查阅得知其中fastestmirror是yum的一个加速插件&#xff0c;这个提示意思是这个插件不能使用,那么就先把他禁…

4 款非常好用的AI生成图片软件

AI生成图片最近是越来越火了&#xff0c;越来越多的AI生成图片工具上线。 本文就给你推荐4款非常好用的AI生成图片工具&#xff0c;避免你碰雷。 即时灵感 「即时灵感」是通过文字描述等方式生成精致图像的AI绘图工具。输入文字&#xff0c;即可将创意变为现实&#xff01; …