当前位置:   GIT > 正文

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

git上传大文件

一、问题导读

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
  • 1

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

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

*.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"
  • 1
  • 2

这将将大文件添加到 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文件夹
  • 1

在这里插入图片描述

2.2 初始化仓库

git init
  • 1

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

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

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

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

在这里插入图片描述

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

git lfs install
  • 1

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

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

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

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

在这里插入图片描述

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

  2. 运行以下命令:

git lfs install
  • 1

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

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

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

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

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

git lfs track "*.pth"
  • 1

这将告诉 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
  • 1

在这里插入图片描述

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

git add .
  • 1

在这里插入图片描述

git commit -m "RegionCLIP_pretrained_ckpt"
  • 1

在这里插入图片描述

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

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

在这里插入图片描述

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

git pull --rebase origin master
  • 1

在这里插入图片描述
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
  • 1

在这里插入图片描述

git push origin master
  • 1

在这里插入图片描述

上传成功!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/blog/GIT/detail/35417
推荐阅读
相关标签
  

闽ICP备14008679号