前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Git清理文件

Git清理文件

作者头像
用户10325771
发布于 2023-03-01 09:04:24
发布于 2023-03-01 09:04:24
42500
代码可运行
举报
运行总次数:0
代码可运行

1. 运行 gc ,生成 pack 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git gc --prune=now

2. 找出最大的三个文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3
# 输出:
4d2ae4c4413740d81019aa65691a2f75f00a5d3b blob 657413784 136436872 5330845
4d2ae4c4413740d81019aa65691a2f75f00a5d3b blob 657413784 136436872 5668892
4d2ae4c4413740d81019aa65691a2f75f00a5d3b blob 657413784 136436872 6313927

3. 查看大文件是什么文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git rev-list --objects --all | grep 4d2ae4c4
# 4d2ae4c4413740d81019aa65691a2f75f00a5d3b 15504.hprof

4.移除对该文件的引用(也就是 15504.hprof

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '15504.hprof'"  --prune-empty --tag-name-filter cat -- --all

5.进行 repack

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
# 这会清除分支变更历史
$ git reflog expire --expire=now --all
$ git repack -A -d
$ git gc --prune=now 
$ git gc --aggressive --prune=now
#检查完整性
$ git fsck --full --unreachable
# 最后push到远程仓库
$ git push --force

6.查看 pack 的空间使用情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git count-objects -v
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Git 仓库体积过大,缩减记录
上图可以看到原仓库已经很大了,所以必须要清除一些仓库中没用的大文件了,每次下载仓库那个时间简直是太长了,github拉取时间太久,受不了了。
框架师
2021/11/22
6.3K0
Git 仓库体积过大,缩减记录
寻找并删除Git记录中的大文件
有时候gitignore没做好,一不小心就又进来一个二进制文件 在重复了N次Google之后,还是记一下吧 首先通过rev-list来找到仓库记录中的大文件: 1 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')" 然后通过filter-branch来重写这些大文件涉及到的所有提交(重写历史记录): 1 g
happy123.me
2018/06/04
3.5K0
100.00 MB以上大文件导致push失败解决方法
事情是这样的,三天前,老板说要聚餐,结果一开心,把白天学的资料一下子就朝仓库里放,
徐建国
2021/08/03
1.5K0
100.00 MB以上大文件导致push失败解决方法
Git 仓库瘦身与 LFS 大文件存储
熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久,追踪的文件越来越多,git 存储的 objects 数量会极其庞大,每次从远程仓库 git clone 的时候都会墨迹很久。如果我们不小心 git add 了一个体积很大的文件,且 git push 到了远程仓库,那么我们 git clone 的时候也会很慢。
Cloud-Cloudys
2023/10/21
8750
Git 仓库瘦身与 LFS 大文件存储
Git: 掉坑记 -- git reset 杀手
项目修改完成之后,会依赖一个比较大的文件,所以这个大文件就在项目根目录中,使用 git 的时候,直接 git add、git commit、git push 一键三连,等到 git push 后就会提示文件过大,超过100M。 由于技术太菜,经过谷哥和度娘的帮助下,我成功通过以下命令回撤了版本:
Mokwing
2020/09/08
7120
Git GC命令清理Git暂存区
Git 会不定时地自动运行称为 “auto gc” 的命令。大部分情况下该命令什么都不处理。不过要是存在太多松散对象 (loose object, 不在 packfile 中的对象) 或 packfile,Git 会进行调用 git gc 命令。 gc 指垃圾收集 (garbage collect),此命令会做很多工作:收集所有松散对象并将它们存入 packfile,合并这些 packfile 进一个大的 packfile,然后将不被任何 commit 引用并且已存在一段时间 (数月) 的对象删除。
框架师
2021/03/08
7K0
Git 维护及数据恢复
你时不时的需要进行一些清理工作 ── 如减小一个仓库的大小,清理导入的库,或是恢复丢失的数据。本节将描述这类使用场景。
看、未来
2022/05/06
6050
彻底删除Git仓库中的某个文件或文件夹(包括历史记录)
想要彻底删除 Git 仓库中的某个文件或文件夹(包括历史记录)时,可以按照以下步骤操作:
德顺
2024/06/22
1.2K0
Git目录为什么这么大
本文围绕git的目录过大,从git进行版本控制底层存储出发,简要分析Git目录过大的原因,以及如何处理
仙人技术
2021/08/31
1.3K0
Git目录为什么这么大
Git+Gerrit如何永久删除历史文件(大文件/私密文件)
前几天同事在拉取一个项目的Git仓库时,发现项目拉取速度非常慢,半个钟都无法拉取下来,并且发现一直卡在了99%的进度上。
开发的猫
2020/04/01
2.7K0
Git+Gerrit如何永久删除历史文件(大文件/私密文件)
SVN 切换到 Git
SVN 和 Git 同样都是在特定时代下比较优秀的版本控制系统,但是随着时代的发展,SVN 越来越不能满足多人开发的需求,尤其是在多种多样,天马星空的业务场景面前,SVN 会显得力不从心。
molier
2022/11/03
9760
SVN 切换到 Git
学习git常用及高阶命令
几个常用的git命令情景 复制代码仓库 git clone --bare|--mirror|--non-bare /var/www/html/myrepo.git 后悔药 覆盖最后一次修改 git add . git commit --amend git push origin master -f Git 放弃本地修改 git checkout . && git clean -df Git 销毁最后一次提交 git reset --hard HEAD^ git push -f origin HEAD^:ma
卡少
2018/05/16
8240
Git内部原理介绍
git 是一个内容寻址的文件系统,其核心部分是一个简单的键值对数据库(key-value data store),可以向该数据库插入任意类型的内容,它会返回一个40位长的哈希键值。并在此基础上提供了一个版本控制系统的用户界面。
腾讯工蜂
2018/12/07
17.1K1
教你如何去掉git历史中的敏感信息
本章教大家如何使用 GIT 进行一些关于已提交历史的修改、删除操作。比如碰到下列情况时,如何使用 GIT 实现想要的操作:
信安之路
2018/08/08
2.4K0
教你如何去掉git历史中的敏感信息
10.7 Git 内部原理 - 维护与数据恢复
有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容。 这个小节将会介绍这些情况中的一部分。
shaonbean
2019/05/26
8460
git 删除指定文件的历史记录
参考 https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository#purging-a-file-from-your-repositorys-history https://rtyley.github.io/bfg-repo-cleaner/
路过君
2023/11/18
1940
[Git] 彻底删除github上的某个文件以及他的提交历史
# 删除包括历史 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件相对路径' --prune-empty --tag-name-filter cat -- --all # 同步到远程 git push origin master --force
唯一Chat
2020/05/19
1.6K0
gitignore用法
下面有些人会遇到加上这个文件,发现忽略的文件还是有上传。 在git库中已存在了这个文件,之前push提交过该文件。 .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了 解决: 需要在git库中删除该文件,并更新。 然后再次git status查看状态,文件不再显示状态。
2021/11/08
4550
删除Git仓库中的大文件
Git是用来管理源代码的一个工具,很多时候,我们不想让Git来跟踪较大的二进制文件。但是如果不小心将某个文件加入到Git的缓存区后,不管后面怎么删除这个大文件,Git始终都保存有这个文件的历史记录,因此项目会很大。拿下面例子来说,我们有个500M的文件cnn.model,通过下面的命令加入到git暂存区或提交到远端(提交时自动执行git gc命令,生成pack文件):
王云峰
2019/12/25
6.1K1
Git工作流协作的一些经验,分支、合并、提交,推送,移除历史
版本管理在编程中的重要程度不言而喻,其中git工作流也是最主流的方式,接下来总结一下git工作流中的一些比较实用的概念和具体方法。
雪碧君
2023/02/15
5730
相关推荐
Git 仓库体积过大,缩减记录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档