【Git删除大文件失败,提示WARNING: Ref ‘refs/heads/master‘ is unchanged的解决思路】

news/2024/5/17 15:35:07 标签: git, gitee, github

1. 问题描述

最近使用Gitee一直在独立开发某个项目,某次因为某个测试文件比较大,超过了100MB,gitee无法接受,上传失败。但是当时我没有发现上传失败,就没有处理,等到今天发现的时候,已经提交过好多次代码了,都是提交到了缓存里,并没有提交到远程分支下。
报错如下图所示:
在这里插入图片描述

2. 尝试解决

google了好多方法,常见的解决办法如下:

$ git filter-branch --force --index-filter  "git rm --cached --ignore-unmatch SampleData/nx/13160600016953_A.prt_Result 20230607.brep"  --prune-empty --tag-name-filter cat -- --all
$ git filter-branch --tree-filter 'rm -f SampleData/nx/13160600016953_A.prt_Result 20230607.brep' --tag-name-filter cat -- --all
$ git rm --cached 'SampleData/nx/13160600016953_A.prt_Result 20230607.brep'
$ git filter-branch --tree-filter 'rm -f SampleData/nx/13160600016953_A.prt_Result 20230607.brep' HEAD
$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch SampleData/nx/13160600016953_A.prt_Result 20230607.brep' --$ prune-empty --tag-name-filter cat -- --all
$ git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch SampleData/nx/13160600016953_A.prt_Result 20230607.brep' --prune-empty --tag-name-filter cat -- --all

但是都不能解决问题,尝试上述代码后push代码,显示 Ref ‘refs/heads/master’ is unchanged,push仍然失败。

3. 最终解决方案

git_reset_soft__18">1 借助git reset --soft 回到提交大文件之前的状态

$ git reset --soft 99a8a18ead63802df7cc0163dfa8afe4db0fb059

git reset --soft 命令用于将 Git 存储库中的当前分支的 HEAD 指针和索引(Index)重置为指定提交,但不更改工作目录中的文件。这意味着此命令将取消之前的提交,并将其撤回到工作区,以便修改之前提交的内容并重新提交。

git_restore_staged_file_23">2 git restore --staged 取消暂存

$ git restore --staged  .

将已暂存(staged)的指定文件的更改还原到未暂存(unstaged)状态。要注意的是,该命令仅针对已经通过 git add 命令添加到暂存区的文件。

gitignore_29">3 修改.gitignore,使大文件不上传

修改.gitignore后,提交.gitignore,从而使上传的数据不包括测试大文件

$ git add .gitignore
$ git commit -m "add .gitignore"
$ git push

4 提交剩余的修改

把后面所有的修改合为一个,统一一次性全部提交

$ git add .
$ git commit -m "XXX"
$ git push

成功解决此问题,效果如下
在这里插入图片描述


http://www.niftyadmin.cn/n/436880.html

相关文章

前端 sentry 接入钉钉机器人

sentry 接入钉钉机器人 打开钉钉,添加机器人 此时会得到Webhook地址,记录一下,以后会用到 sentry 端设置 看看这里有木有钉钉插件,有的话开启插件,并配置这里我说一下没有的情况下,我们何如设置 这里需要填写webhook url 这个的url 需要是一个公网的地址,不可以是本地…

当你拥有什么样的高性能计算技术水平,你才能成为一名高性能计算工程师? ...

在当今科技快速发展的时代,高性能计算工程师成为了推动科学研究、工程仿真和大数据处理的关键人才。尤其是我国大力发展科研基建,打造科研技术底座,这就更加需要高性能计算工程师通过自身的技术来加速科研建设和研发的进度和速度。 我们调研了…

Redmine与Gitlab整合(实战版)

网上查了很多文章,总结一下。 安装过程略。可参考:(84条消息) Redmine与Gitlab功能集成_redmine gitlab_羽之大公公的博客-CSDN博客 配置集成的方法,参考: Redmine与GitLab集成 (ngui.cc) 修改ssh-key密码的方法,参…

408数据结构第二章

线性表 定义和基本操作顺序表的定义和操作线性表的链式表示顺序表和链表的比较 定义和基本操作 线性表是具有相同数据类型的n个数据元素的有限序列 每个元素有且仅有一个直接前驱直接后继 线性表是一种逻辑结构,表示元素之间一对一的相邻关 顺序表和链表是指存储结…

uboot读取adc,通过cmdline传给kernel解析数值,不同硬件模块进行处理

uboot读取adc,通过cmdline传给kernel解析数值,不同硬件模块进行处理 uboot开发,要想读取adc在哪个时间点读取以及如何传给cmdline,需要清楚2点, uboot启动得大致流程及相关启动功能,uboot各个硬件模块得接…

【MySQL-约束篇】

目录 1、空值(Null)2、默认值3、主键4、自增5、唯一键6、外键 1、空值(Null) 先看一个表结构。 ------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ------------------------------------------------- | id …

cesium学习(相机)

飞到一个地方 如果你知道位置的经纬度和高度,你可以使用相机的flyTo功能直接飞到CesiumJS中的那个位置。 viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0), });更改相机的方向 flyTo要在完成后更改相机的方向&#x…

【C++学习】VScode配置C/C++开发环境

VSCode是一个高级编辑器,只能用来写C/C/Python/Java等代码,不能直接编译这些代码。所以,我们需要搭建编译和调试环境,本文以C/C为例,使用MinGW-w64,将其移植到Windows平台的一个gcc编译器。下面具体介绍如何…