大仓库推到GitHub大踩坑-Git LFS从安装到使用

前言

众所周知,GitHub会在单文件>100MB时直接拒绝,总体几个GB的pack也经常触发5xx/断开,博主今天就遇到了:

复制代码
Enumerating objects: 6335, done. Counting objects: 100% (6335/6335), done. 
Delta compression using up to 12 threads Compressing objects: 100% (6315/6315), done. 
error: RPC failed; 
HTTP 500 curl 22 
The requested URL returned error: 500 
send-pack: unexpected disconnect while reading sideband packet 
Writing objects: 100% (6335/6335), 4.36 GiB | 4.00 MiB/s, done. 
Total 6335 (delta 102), reused 1 (delta 0), pack-reused 0 fatal: the remote end hung up unexpectedly 
Everything up-to-date

虽然显示远端remote end hung up了,但真正的原因还是体积过大。那么此时就需要用到Git LFS (Large File Storage) 。怎么用呢?本文将一文讲清,因为博主是踩坑体质,踩了所有坑^^。

(1)错误出现后,先确认远端有没有收到

复制代码
git remote show origin
git fetch origin
git log --oneline origin/main -1

如果看不到本地最新的提交,或出现类似于以下的fatal,则说明远端是空仓库/还没首推成功,就继续按下面的步骤清理。

复制代码
git remote show origin #输入
* remote origin 
Fetch URL: https://github.com/xxx/xxx.git
Push URL: https://github.com/xxx/xxx.git
HEAD branch: (unknown) #主要是这行,没有能在远端创建分支

git log --oneline origin/main -1 
fatal: ambiguous argument 'origin/main':

(2)确认本地分支名

复制代码
git rev-parse --abbrev-ref HEAD
# 如果不是 main,则:
git branch -M main

(3)安装并启用Git LFS

安装方式 1:用 conda(推荐,集群用户最干净)

在当前的 conda 环境里执行:

复制代码
conda install -c conda-forge git-lfs

安装完执行一次(仅一次即可)

复制代码
git lfs install

如果没有报错,会看到提示:

复制代码
Git LFS initialized.

安装方式 2:系统级安装(如果有 sudo 或集群支持)

复制代码
sudo apt-get update sudo apt-get install git-lfs git lfs install

安装方式3:手动安装

因为博主在学校的GPU上运行提交,因此集群上没安装git-lfs也没有sudo权限。因此,博主选择手动安装。

Git-LFS安装链接:https://github.com/git-lfs/git-lfs.git

git fls linux amd64的最新版本3.7.1:Release v3.7.1 · git-lfs/git-lfs(点这个链接)

如图,下载Linux AMD64版本,得到git-lfs-linux-amd64-v3.7.1.tar.gz,把压缩包传送到环境中home的目录并通过以下命令解压,进入解压后的目录

复制代码
tar -xzf git-lfs-linux-amd64-v3.7.1.tar.gz
cd git-lfs-3.7.1

由于3.7.1版本的lfs的二进制包中的install.sh又改版问题,不再接受路径参数,默认会尝试写入/usr/local/bin,所以我们要手动复制可执行文件到用户目录:

复制代码
# 1️⃣ 创建用户级 bin 目录
mkdir -p /home/zhao0546/.local/bin

# 2️⃣ 手动复制可执行文件
cp git-lfs /home/zhao0546/.local/bin/

# 3️⃣ 加入 PATH(临时生效)
export PATH=/home/zhao0546/.local/bin:$PATH

# 4️⃣ 验证是否成功
git lfs version

# 如果输出git-lfs/3.7.1 (Github; linux amd64; go1.x)
说明安装成功

你也可以通过以下操作使其永久生效(目前是临时的)

在~/.bashrc文件中加入

复制代码
export PATH=/home/zhao0546/.local/bin:$PATH

然后执行:

复制代码
source ~/.bashrc

接下来就可以使用Git LFS啦!

(4)如何使用Git LFS

① 进入你的项目目录,执行

复制代码
# 初始化git(如果之前已经init过则跳过)
git init

# 初始化git lfs(同样只需要一次)
git lfs install

② 告诉lfs要追踪哪些文件类型,然后把.gitattributes加入版本控制。

复制代码
#我列出了常用的文件类型,可以直接复制
git lfs track "*.p*" "*.pth" "*.pt" "*.bin" "*.ckpt" "*.onnx" "*.tar" "*.tar.gz" "*.zip" "*.7z" "*.tgz" \
"*.h5" "*.pkl" "*.npy" "*.npz" "*.pb" "*.dat" "*.weights" "*.model" "*.tflite" \
"*.mp4" "*.mov" "*.avi" "*.mkv" "*.jpg" "*.jpeg" "*.png" "*.bmp" "*.gif" \
"*.csv" "*.tsv" "*.jsonl" "*.pickle" "*.db" "*.sqlite" "*.wav" "*.mp3" "*.flac"

#加入.gitattributes进版本控制
git add .gitattributes
git commit -m "Track all large files with Git LFS"

③ 把历史中已有的大文件迁移到LFS

在这一步,会问你:

如果你在前一步还没有commit -m,或输入git status后出现了很多红色文件名(未暂存修改),那就需要再次执行以下上一步的:

复制代码
git add .
git commit -m "save current changes before LFS migrate"

确认没有红色文件名后再进行迁移步骤:

复制代码
git lfs migrate import --include="*.pth,*.pt,*.bin,*.ckpt,*.onnx,*.tar,*.tar.gz,*.zip,*.7z,*.tgz,*.h5,*.pkl,*.npy,*.npz,*.pb,*.dat,*.weights,*.model,*.tflite,*.mp4,*.mov,*.avi,*.mkv,*.jpg,*.jpeg,*.png,*.bmp,*.gif,*.csv,*.tsv,*.jsonl,*.pickle,*.db,*.sqlite,*.wav,*.mp3,*.flac"

④ 创建远端仓库并强制推送

注意,这里只能用--force, Git Hub 会先上传代码,再上传 LFS 对象。第一次上传 4-5 GB 可能需要几十分钟,但之后增量 push 都很快。

复制代码
git remote add origin https://github.com/Ziyan0605/multi-target.git
git branch -M main
git push -u origin main --force

至此,你的仓库就已经成功地推到GitHub上了!

(5)后续push时只需要普通命令

以后修改代码或者模型的时候,只需:

复制代码
git add .
git commit -m "update project"
git push

Git会自动识别哪些是LFS,哪些是普通文件。

相关推荐
量子位3 小时前
字节版龙虾架构火爆GitHub!开源获35k+ Star,内置Skill全家桶,原生适配飞书
github·ai编程
悠然大月季3 小时前
git 怎么导出提交历史,文件是乱码
git·git导出历史记录·git导出历史乱码
chenshiming8025 小时前
在cursor下执行GIT回退版本
git
汪海游龙7 小时前
开源项目 Trending AI 招募 Google Play 内测人员(12 名)
android·github
HealthScience8 小时前
github怎么授权ssh(私人库授权)
运维·ssh·github
打点计时器8 小时前
Git快速上手教程
git
我才是一卓9 小时前
linux 安装简易 git 服务端并使用
linux·运维·git
CoderJia程序员甲9 小时前
GitHub 热榜项目 - 日榜(2026-03-22)
人工智能·ai·大模型·github·ai教程
阿里嘎多学长9 小时前
2026-03-22 GitHub 热点项目精选
开发语言·程序员·github·代码托管