首页 > 其他分享 >在Git历史记录中删除大文件

在Git历史记录中删除大文件

时间:2024-11-08 22:18:52浏览次数:1  
标签:历史记录 Git 删除 文件 -- git pack

写在前面

删除git历史文件能够有效减小git仓库尺寸,但是一定注意:删除历史记录也会导致当前目录文件丢失,请做好备份!!!
如果不小心在git中提交了大文件,可以在历史记录中彻底删除,然后使用Git LFS存放大文件。

三步搞定

反复执行以下三步即可,直到查询出的文件无需删除。

  1. 找到历史记录中最大文件路径
  2. 在历史记录中删除
  3. 删除该文件的引用

找到历史记录中最大文件路径

git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk '{print $1}')

复制打印出的文件路径,别称PATH

在历史记录中删除

git filter-branch --index-filter 'git rm --cached --ignore-unmatch PATH' -- --all

替换以上PATH

删除该文件的引用

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune

拓展一下

以下命令查看pack文件包的相关详细信息,通过文件大小进行排序,这里只列出5个最大的文件哈希

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

以下命令列出某条记录对应的文件名等详细信息

git rev-list --objects --all | grep 777e8697e5dc1017ca901c8cf226d707b6e96b06

标签:历史记录,Git,删除,文件,--,git,pack
From: https://www.cnblogs.com/ybli/p/18536028

相关文章

  • GitHub每日最火火火项目(11.7)
    项目名称:DataExpert-io/data-engineer-handbook项目介绍:“DataExpert-io/data-engineer-handbook”是一个非常有价值的资源库。这个项目收集了与数据工程相关的各种学习链接,涵盖了数据工程领域的方方面面。对于想要深入了解数据工程的人来说,它就像是一个知识宝库。无论是......
  • 第七章:IDEA集成Git
    目录一、环境准备1.配置Git忽略文件2.定位Git程序二、初始化本地库三、添加暂存区四、提交本地库五、切换版本六、分支操作1.创建分支2.切换分支3.删除分支七、合并分支1.正常合并2.冲突合并总结一、环境准备1.配置Git忽略文件我们再写代码的时候,系统常常会......
  • gitignore修改后怎么生效
    目录从Git跟踪中移除已经被忽略的文件添加.gitignore文件到仓库提交更改推送到远程仓库修改.gitignore文件后,要使更改生效,你需要重新提交该文件到Git仓库。如果你已经添加了新的规则到.gitignore,但是Git仍然跟踪某些应该被忽略的文件,可能是因为这些文件已经被提交到了仓库中。......
  • ubuntu下安装 git 及部署cosyvoice(1)
    1.git安装使用应用市场如图2.登录,clone项目完成后如图,我也看不懂,反正高大上。2.Anaconda cosyvoice虚拟环境的部署2.1创建(base)duyicheng@duyicheng-computer:~$condacreate--namecosyvoice-yChannels:-defaultsPlatform:linux-64Collectingpacka......
  • 极狐GitLab 签约某清洁能源高科技企业,助力零碳技术开创更加美好的零碳世界
    客户背景该客户是一家全球领先的清洁能源高科技公司,总部位于江苏省。公司自成立之初就致力于为全球客户提供清洁、高效、安全的能源解决方案,希望能用高科技技术让新能源发挥更大价值,让世界变得更加美好。当前,该客户在多个能源领域都有领先的产品和成熟的解决方案,也一直在持续推动......
  • GitHub | 发布到GitHub仓库并联文件夹的方式
    推送到Github推送步骤如果你只想更新单个文件,只需在第4步中指定该文件的路径即可。可能问题一效果推送步骤更新GitHub仓库中的文件通常涉及以下步骤:克隆仓库:首先,你需要将GitHub上的仓库克隆到本地。使用gitclone命令克隆仓库:gitclone仓库地址切......
  • 代码随想录算法训练营第二十天|leetcode235. 二叉搜索树的最近公共祖先、leetcode701.
    1leetcode235.二叉搜索树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先-力扣(LeetCode)文章链接:代码随想录视频链接:二叉搜索树找祖先就有点不一样了!|235.二叉搜索树的最近公共祖先_哔哩哔哩_bilibili思路:用之前一样的方法,哈哈哈哈哈,好处就是做出来了,但是我觉得需......
  • Git推送报错Authentication failed
    问题背景在某一次的Git推送时,配置好commit信息之后,执行push操作的时候出现了这样的一个报错信息:$gitpushfatal:couldnotreadUsernamefor'https://gitee.com':terminalpromptsdisabledfatal:couldnotreadUsernamefor'https://gitee.com':terminalpromptsdi......
  • git push -u 中的u是什么意思
    目录1.1现象背景1.2命令溯源1.1现象背景在平台(比如gitea)创建一个仓库后,提示的命令中有一个-u参数,但发现加不加这个参数都能推送成功,那这个参数有什么用呢?1.2命令溯源去到git官网文档界面查看命令参数时,发现-u是长命令--set-upstream的简写。查看具体的命令解释......
  • 数据结构_链表_双向循环链表 & 栈 的初始化、插入、删除、修改、查询打印(基于C语言实
    一、双向循环链表的原理与应用双向循环链表与双向链表的区别:指的是双向循环链表的首结点中的prev指针成员指向链表的尾结点,并且双向循环链表的尾结点里的next指针成员指向链表的首结点,所以双向循环链表也属于环形结构。由于带头结点更加方便用户进行数据访问,所以本次创建一条带......