删除git中无用的大文件

推荐阅读:为什么你的 Git 仓库变得如此臃肿

有时候我们不小心提交了一些大文件上去,后来删除了,但是已经于事无补了,整个git的提及已经蹭蹭上去了。

这个时候怎么办呢?

1. git filter-branch

git filter-branch --force --index-filter ‘git rm --cached --ignore-unmatch 文件名‘ --prune-empty --tag-name-filter cat -- --all

git filter-branch --index-filter每个提交的文件都复制到索引(.git/index)中

然后运行过滤器命令:git rm --cached --ignore-unmatch 文件名 ,让每个提交都删除掉“文件名”文件

然后--prune-empty 把空的提交“修剪”掉

然后--tag-name-filter cat 把每个tag保持原名字,指向修改后的对应提交

最后-- --all 将所有ref(包括branch、tag)都执行上面的重写

2. 删除缓存下来的ref和git操作记录

git for-each-ref --format=‘delete %(refname)‘ refs/original | git update-ref --stdin
git reflog expire --expire=now --all

3. 垃圾回收

上面2步把大文件的索引都切断了,这个时候进行垃圾回收,就可以很明显看到效果了

git gc --prune=now

4. 把.git里面的修改推上去

这个时候普通的push是不行的,需要强推

git push --force

原文地址:https://www.cnblogs.com/amiezhang/p/11337095.html

时间: 2024-11-10 18:21:26

删除git中无用的大文件的相关文章

彻底删除git中的较大文件(包括历史提交记录)

2019年04月15日 15:47:31 HappyRocking 阅读数 395更多 分类专栏: linux 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/HappyRocking/article/details/89313501 场景 适用于从一个git项目中,将体积较大的资源彻底从git中删除,包括历史提交记录. 如果仅仅在目录中删除一个文件是不够的,只要在提交记录中有这个文件,那

Android清除工程中无用的资源文件

一.调用Android lint命令查找出没有用到的资源,并生成一个清单列表: 命令:lint –check "UnusedResources" [project_path] > result.txt 执行完之后会生成一个清单文件,内容如下: 二.使用代码自动删除无用的文件: public class DelAction { public static void main(String[] args) throws IOException { String projectPath

超大批量删除redis中无用key+配置

目前线上一个单实例redis中无用的key太多,决定删除一部分. 1.删除指定用户的key,使用redis的pipeline 根据一定条件把需要删除的用户统计出来,放到一个表里面,表为 del_user(int user_id),rows大约在1千万. 要删除的key为 "login:%s" %s匹配 user_id . 写sql文如下:把sql文保存在一个文件里面,命名为 1.sql SELECT CONCAT( "*2\r\n", '$3\r\n',    'D

git无法上传大文件

环境先描述一下,公司办公网自己在centos上搭建了gitlab,同时办公网的域名是从ST环境通过nginx解析过来的,这样一样就是文件经过两个nginx,按照网上的文章修改了两个nginx配置文件里的client_max_body_size,同时修改了git的配置postBuffer,依旧 无法上传大文件. 最终解决方案,修改了传输协议通过ssh协议上传.通过ssh协议首先是秘钥对的生成,相关生成方式,ssh-keygen -t rsa 一路回车生成.将生成的公钥配置到gitlab相关项目上

centos中查找出大文件命令汇总

在linux中简单的查找文件与目录大小很简单 #已易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详细显示每个子目录或文件的大小 du -sh [dirname|filename] 如: 当前目录的大小: 代码如下 复制代码 du -sh . 当前目录下个文件或目录的大小: 代码如下 复制代码 du -sh * 显示前10个占用空间最大的文件或目录: 代码如下 复制代码 du -s * | sort -nr | head * -h已易读的格式显示指定目录或文件的大小 * -s选项指定对

删除git中缓存的用户名和密码

我们使用Git命令去clone Gitlab仓库的代码时,第一次弹框提示输入账号密码的时候输错了,然后后面就一直拒绝,不再重复提示输入账号密码,怎么破? git报错信息 运行一下命令缓存输入的用户名和密码: git config --global credential.helper wincred 清除掉缓存在git中的用户名和密码 git credential-manager uninstall 完美解决! 原文地址:https://www.cnblogs.com/mengtaoadmin/p

git中避免提交.DS_Store文件[转载]

1. 先删除原有的.DS_Store: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch 命令解释:在当前文件夹以及当前文件夹的子文件夹中找到所有的.DS_Store文件,并将找到的文件通过管道传给xargs来处理.注意几个参数的理解: -print0:在find后不添加换行符(-print默认会添加换行符) -0:将管道送来的字符串当做普通的字符串,不做任何转义处理. 2. 建立.gitignore文件 v

怎样从本地删除git远程仓库里面的文件

https://jingyan.baidu.com/article/2a1383288e2ba5074a134fb5.html git是大家通用的一种版本控制系统,便捷高效,各种命令需要牢记,今天小渔介绍给大家的是git的删除命令,即将文件从远程仓库中删除的操作. 方法/步骤 1 首先,我们打开自己的本地GIT仓库,在根目录下右击鼠标,选择git bash选项. 2 进入到我们的git命令行页面后,先将远程代码pull到本地,保持本地仓库跟远端仓库同步. 3 然后我们使用git rm命令删掉要删

IOS 删除git中的submodules 以sourceTree为例

1.首先删除submodule的条目  选中要删除的子目录 右键删除,删除之后, 该子模块消失. 然后查看 .gitmodules 发现删除了里面的 [submodule "IphoneApp/submodules/ProjectName"] path = IphoneApp/submodules/ProjectName url = [email protected]:dizhi/ProjectName.git 同时 项目中的  例如 IphoneApp/submodules/Proj