【Git】利用 LFS 突破 GitHub 大文件上传限制

GitHub 上传文件夹到远程仓库、再次上传修改文件、如何使用lfs上传大文件、github报错一些问题 本文主要分为几个部分:Github上传文件到远程仓库;如何修改github已提交的文件或者再次上传文件到远程仓库?;删除仓库;使用lfs 上传大文件(> 100 M 文件或者数据) 阅读详情

Git LFS

利用 Git LFS 突破 GitHub 大文件上传限制

接触此技术背景

本人一直有将笔记备份的习惯,虽然已经有云同步,但是异地存档能再加多层保险

随时间推移,笔记内容也越来越多,我的笔记快照的体积越来越大,最近一次直接超出了 Git 单次推送的最大体积限制(100MB),在查询解决方法时,发现 Git 有一种叫 LFS 的技术(Large File Storage),他能很好的解决此问题。

技术介绍

Git LFS 是 Git 的一个开源扩展,旨在解决 Git 在处理大尺寸二进制文件(如视频、数据集、压缩包)时的性能瓶颈。

因为 Git 的设计初衷是管理文本文件,它会完整记录文件的每一个版本。对于像我这样提交这么大我体积的的 ZIP 包,如果修改一次再提交,仓库体积会立刻翻倍。

底层原理

那么它的思路就是把大文件给“拆开”。

LFS 的解决方法是:当你将文件放入 LFS 管理时,Git 仓库中存储的不再是那个 180MB 的实体,而是一个几百字节的指针文件。真实的二进制数据被存储在 GitHub 的 LFS 专用服务器上。

当执行 git checkout​ 时,LFS 会根据指针里的哈希值,自动从服务器下载对应的真实文件覆盖到你的工作区。这样本地的 .git 目录(版本库历史)依然保持精简,这个设计非常巧妙。

技术实现

我的最近一次提交是错误的,虽然提交了但是 push 失败了,故必须通过重置索引并应用 LFS 规则来修复。

  1. 首先要安装 LFS 扩展

    # 在你本地的git工作区
    git lfs install
    
  2. 标记你的大文件由 LFS 来管理,以我的笔记快照为例,它的文件格式就是 .ZIP,那么命令就是

    git lfs track "*.zip"
    

    注意:这会生成或更新 .gitattributes 文件,必须将其一同提交

  3. 重新添加并提交

    由于你之前的 Commit 已经包含了这个超限文件,需要先撤销上一次失败的提交,重新打包提交

    # 撤销上一次 commit,但保留文件变动
    git reset --soft HEAD~1
    
    # 重新添加属性文件和大文件
    git add .
    git commit -m "commit message"
    git push origin master
    

执行到这一步,就已经能正确 push 上去了

在这里插入图片描述

后续维护

看到这会有疑惑:那么这次能提交成功了,后续该如何维护呢?

维护 LFS 需要关注 ​.gitattributes​ 文件、本地存储占用以及云端配额三个维度

  • 追踪管理

    你需要明确告诉 Git 哪些文件属于大文件。使用命令 git lfs track "你的文件"​。 这会更新 .gitattributes​ 文件。每次更新必须提交这个属性文件,否则协作成员拉取代码时,Git 会将其当作普通大文件处理,再次导致推送失败

  • 监控状态

    • 使用 git lfs ls-files:查看当前索引中哪些文件正受 LFS 管理
    • 使用 git lfs status:检查当前暂存区的对象状态
  • 本地存储清理

    长期频繁更新大文件会导致本地 .git/lfs​ 目录体积激增。使用 git lfs prune 可以安全删除本地不再被当前分支引用的旧版二进制块。

  • 配额管理

    GitHub 免费账户提供 1GB 存储和 1GB 每月下行流量,这要注意它的限制,如果配额耗尽,别人拉下来的包都是指针文本,不会真正下载内容

希望对你有帮助,祝您身体健康。

‍

Git如何上传大文件到Github指定仓库 上传大文件(超过100M)到Github笔者上传操作100M的文件到Github,结果在push的时候会自动终止。然后提示无法上传大文件,就算删除再提交也是报错。 阅读详情

相关推荐

Git-LFS实战指南:突破Github大文件上传限制

本文是Git-LFS实战指南,详细介绍了如何突破Github单个文件100MB的上传限制。通过安装配置Git-LFS,使用`git lfs track`命令追踪大文件,即可将模型、资源包等大型二进制文件顺利托管至Github。文章还涵盖了TortoiseGit图形化操作、LFS配额注意事项及团队协作要点,帮助开发者高效管理项目中的大文件。

weixin_28839699的博客 352

GitHub用Lfs上传大文件

GitHub用Lfs上传大文件

Doctor_Mua的博客 1123

Git LFS实战:突破GitHub 25MB限制,优雅管理大文件

在版本控制系统和代码托管平台中,文件大小限制是开发者常遇到的工程挑战。GitHub等平台为保障仓库性能和克隆效率,通常对单个文件设置上传阈值(如25MB)。Git Large File Storage(LFS)通过指针替换原理,将大文件实体存储于专用服务器,而仓库内仅保留轻量指针,实现了对大型二进制文件的透明化版本控制。这项技术解决了机器学习模型、数据集、媒体资源等大文件在协作开发中的管理难题,显著提升了仓库克隆速度和团队协作效率。本文以GitHub平台为例,详细解析如何通过Git LFS配置、追踪规则设置

weixin_28840591的博客 288

Git LFS提交大文件到GitHub

Git LFS提交大文件到GitHub

游手好闲 1431

【实战指南】巧用Git LFS,轻松突破GitHub 100MB文件上传限制

本文详细介绍了如何利用Git LFS突破GitHub 100MB文件上传限制,特别针对大文件如模型权重等场景。通过安装配置、实战上传流程到团队协作注意事项的全方位指南,帮助开发者高效管理大型文件,同时保持Git工作流的完整性。

weixin_30455023的博客 376

Git LFS 3.5.1 管理大文件实战:突破 GitHub 100MB 单文件限制

本文详细介绍了如何使用Git LFS 3.5.1管理大文件,突破GitHub 100MB单文件限制。通过实战案例展示如何安装配置Git LFS、跟踪大文件并优化上传流程,特别适合机器学习、游戏开发等需要处理大文件的场景。文章还提供了高级配置技巧和常见问题解决方案,帮助开发者高效管理Git仓库中的大型二进制文件。

weixin_34209851的博客 438

github大文件上传:使用LFS (以及如何将lfs从仓库中移除!)

如题,主要讲一下怎么在github上上传超过100M的文件。

the Blog of 等不到天亮丶等时光 1万+

【实战指南】突破GitHub文件大小限制:Git LFS高效管理大文件上传

本文提供了突破GitHub 100MB单文件限制的实战指南。详细介绍了如何使用Git LFS高效管理大文件上传,包括安装配置、迁移历史文件、设置跟踪规则及日常开发流程,帮助开发者解决模型文件、数据集等大型资源在GitHub上的版本控制难题。

weixin_28834765的博客 407

使用Git将文件夹上传到Github以及使用Git LFS上传大文件

本地 GIT 客户端创建了一个默认分支,称为master(git init初始化存储库时),但 GitHub 上的远程存储库没有master,而是默认分支称为main。再把postBuffer的值配置成500M,可以根据你需要下载的文件大小,将postBuffer值配置成合适的大小。打开C:\Users\当前用户里的.gitconfig文件(这个默认是隐藏文件),将里面关于proxy的行删掉。提交代码需要将gitattributes文件提交至仓库,它保存了文件的追踪记录。4.进入克隆下来的仓库的文件夹。

kkill_youokk_的博客 4719

避开内存陷阱:手把手教你用RKNN零拷贝接口正确管理输入输出Tensor

本文深入解析RKNN零拷贝接口在边缘计算中的高效内存管理策略,通过YOLOX实例演示如何避免内存对齐错误和数据错位。详细介绍了`rknn_tensor_mem`系列API的正确使用方法,包括内存创建、绑定、释放全流程,以及性能优化技巧如内存池技术和多核NPU负载均衡,帮助开发者提升推理效率并避开常见陷阱。

weixin_33686714的博客 160

Excel插件开发实战:从零封装一个带自定义Ribbon的.xlam工具包

本文详细介绍了如何从零开发一个带自定义Ribbon的Excel插件.xlam工具包。通过VBA和XML技术,读者将学习到插件架构设计、Ribbon界面定制、模块化开发以及企业级部署策略,帮助提升Excel自动化办公效率。

weixin_42531128的博客 514

GitHub大文件上传终极指南:手把手教你用Git LFS突破100MB限制

本文详细介绍了如何使用Git LFS突破GitHub的100MB单文件上传限制。通过解析其指针替换的核心原理,提供从环境安装、文件追踪到迁移历史仓库的完整实战指南,并分享高级技巧与成本管理的最佳实践,帮助开发者高效管理模型、数据集等大型文件。

sre5engineer的博客 983

Frida实战:高效dump Android内存中的so文件与修复技巧

本文详细介绍了使用Frida工具dump Android内存中已解密so文件的实战技巧。针对加固应用静态分析失效的痛点,文章提供了从环境搭建、使用frida_dump脚本自动化抓取内存数据,到利用SoFixer工具修复ELF文件结构的完整流程,帮助逆向分析人员高效获取可分析的so文件。

tt34567的博客 527

Github上传大文件

GitHub上传大文件项目的唯一标准方案是Git LFS安装Git LFS → 全局初始化 → 追踪大文件(生成.gitattributes) → 常规Git提交推送,关键是通过指定大文件,并保证随项目提交,即可突破GitHub的25MB单文件限制,支持最大5GB的单文件上传。

qq_43815828的博客 1199

postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license

最近在工作中使用postgresql 和 timescaledb 的time_bucket_gapfill()函数 报错,让更换license,在网上找了一大圈,没有找到,最后解决了这个问题,这篇文章记录我的解决办法查看timescaledb.license参数命令:show timescaledb.license;修改命令: 结果不行,报错如下:lter system set timescaledb.license=‘timescale’;那只能换包了如果出现上面那种情况,那我们只能先从官网上下载带 '

yang_z_1的博客 3249

五、2K0300 久久派开发板的GPIO控制与Shell脚本自动化实战

本文详细介绍了基于龙芯2K0300处理器的久久派开发板的GPIO控制方法,通过sysfs文件系统实现LED控制和传感器读取。重点讲解了Shell脚本自动化实战,包括LED闪烁、流水灯效果和传感器数据采集,为物联网项目开发提供完整解决方案。

silver的专栏 686

如何在GitHub Desktop上传大文件

使用GitHub桌面版准备上传项目时,发现在上传的时候会有100MB的容量限制,这是项目里的某个.framework文件大小超过了100MB的警告。 那么如何在GitHub桌面版上传大文件呢?这时候我们需要安装一个叫 Git LFS (Git Large File Storage) 的东西。 安装方法: 1.我们首先需要安装Homebrew。打开终端,苹果电脑常规安装(推荐 完全体 几分钟安装完成): /bin/zsh -c "$(curl -fsSL https://gitee.com/cu

Alexander Wei的博客 4771

计算机视觉:AI生成内容(AIGC)对视觉领域的冲击

计算机视觉:AI生成内容(AIGC)对视觉领域的冲击​ 人工智能,计算机视觉,大模型,AI,在信息技术日新月异的当下,计算机视觉作为人工智能领域的关键分支,已经深度融入了我们生活与工作的各个层面。从安防监控系统里精准的人脸识别,助力维护公共安全;到工业生产线上高效的产品质量检测,保障产品品质;再到医疗影像分析中为疾病诊断提供有力支持,计算机视觉技术凭借其对视觉信息的强大处理与理解能力,不断推动着各行业的发展与变革。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

Git 上传大文件最新版

remote: error: GH001: Large files detected. remote: error: Trace: 7b7de6b9372ee392e0f3961b05ea6f33 remote: error: See http://git.io/iEPt8g for more information. remote: error: File *.framework/Version...

Welcome to you! 1674

【Bug已解决】Codex App returns 401 Missing bearer/basic authentication after login on multiple Windows la

原始报错:Codex App returns 401 Missing bearer/basic authentication after login on multiple Windows laptops场景:用户在 Windows 笔记本上登录应用成功了,但随后每个业务请求都返回 401,提示"Missing bearer/basic authentication"。登录态像是"假的"——明明登了,请求却没带任何认证信息。多台 Windows 设备都能复现。

一键难忘的博客 589

【Unity】 预制体Prefab使用说明

在 Unity 中,Prefab 是一个可以预先制作并重复使用的 GameObject 或组件集合,Prefab 中的 GameObject 可以有子对象和其他组件。

灵境引路人 2849

git上传大文件

remote: error: GH001: Large files detected. remote: error: Trace: 7b7de6b9372ee392e0f3961b05ea6f33 remote: error: See http://git.io/iEPt8g for more information. remote: error: File *.framework/Version...

qq_22656617的博客 1404

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

gitee上传大文件(超过300M)

在开源协作与代码托管日益普及的当下,Gitee 作为国内领先的代码托管平台,为开发者、团队及企业提供了便捷高效的项目管理与协作空间。为确保平台存储资源的合理分配、保障服务的稳定性与流畅性,同时提升用户整体使用体验,Gitee 制定了单文件上传不超过 300M 的限制规则。这一限制虽能规避因超大文件传输导致的网络拥堵、存储压力过大等问题,但也给需要上传大型资源(如高清视频素材、大型数据集、完整安装包)的用户带来了挑战。若强行上传超限制文件,不仅会导致上传失败,还可能影响项目进度与团队协作效率。

wsdbtx的博客 2650

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

突破github的100M单个大文件上传限制

解决方案 维持单个文件在100M以内,保持原仓库,剔除单个文件大于100M的github 官方解决方案 网上他人解决方案1:http://www.jianshu.com/p/09a2d9db861c 网上他人解决方案2:http://www.codeinterpreter.com/2015/01/solving-this-exceeds-githubs-file-size.html 网上他人解决方...

eli的博客 1916

【已解决】github上传大文件:this exceeds GitHub‘s file size limit of 100

安装GitLFS依赖项和二进制文件安装GitLFS验证GitLFS已被成功安装。

2501_90250923的博客 1774

Git - push超过100M大文件到远程仓库

Git-提交大文件到远程仓库 在用sourcetree提交项目文件到github远程仓库时遇到了下面错误: remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. remote: error: Trace: 4bf53b6...

wengmq的博客 5600
上一篇: Java 集合判空方法对比
下一篇: 【Claude Code】实现你的 Workflow,项目开发更得心应手~~(超详细流程)
Jul1en_
博客等级 码龄2年 275粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值