GitLab永久删除敏感信息或大文件

有一个开源工具BFG可以实现这样的功能
对于已经拉取下来的代码,无能为力,因为别人已经看到了

安装JAVA环境

下载 jdk-8u201-windows-x64.exe,一路回车
配置环境变量
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_201
PATH中添加:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

清洗代码

因为Gitlab默认开启了分支保护,不允许强制推送,需要关闭分支保护
git clone --mirror git://example.com/some-big-repo.git
删除大文件:
java -jar bfg.jar --strip-blobs-bigger-than 100M --replace-text password.txt repo.git
cd repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push

不知什么原因,倒数二三行推送不到Gitlab,需要登陆服务器单独执行
线上git目录:/var/opt/gitlab/git-data/repositories
清洗完毕,客户端需要执行 git reset --hard origin/master 来避免再次提交敏感信息 ,最后开启分支保护

原文地址:https://blog.51cto.com/14043491/2362593

时间: 2024-07-29 20:07:45

GitLab永久删除敏感信息或大文件的相关文章

.git文件过大!删除大文件

在我们日常使用Git的时候,一般比较小的项目,我们可能不会注意到.git 这个文件. 其实, .git文件主要用来记录每次提交的变动,当我们的项目越来越大的时候,我们发现 .git文件越来越大. 很大的可能是因为提交了大文件,如果你提交了大文件,那么即使你在之后的版本中将其删除,但是, 实际上,记录中的大文件仍然存在. 为什么呢?仔细想一想,虽然你在后面的版本中删除了大文件,但是Git是有版本倒退功能的吧,那么如果大文件不记录下来, git拿什么来给你回退呢?但是,.git文件越来越大导致的问题

记一次删除Git记录中的大文件的过程

app/test/target/ #查看大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')" #删除大文件或者目录 git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch app/

Git 删除大文件的方法

有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传的文件(没及时或忘了加到.gitignore里的), 而且上传的文件又特别大的时候, 这将导致别人clone你的代码或下载zip包的时候也必须更新或下载这些无用的文件, 因此, 我们需要一个方法, 永久的删除这些文件(包括该文件的历史记录). 首先, 可以参考 github 的帮助: https://help.github.com/articles/remove-sensitive-data 步骤一: 从你的资料库中清除文件 以Wind

为什么NTFS删除超过4G大文件或数据库文件后FILE RECORD大小表现为0

为什么NTFS删除超过4G大文件或数据库文件后FILE RECORD大小表现为0? 答:NTFS删除一个文件,必须要完成如下几个流程,才算完结: 1.更改文件系统$bitmap,释放空间 2.更改$mft filerecord项的属性为删除 3.更改$mft:$bitmap的位图信息为0,释放这个filerecord的占用空间 4.清除目录链表中关于本文件的item信息. 这个流程是理想状态下的处理规则,但实际上,最头疼的是OS要考虑这个问题:如果在上述4个步骤中出现中断(如突然断电.死机等),

Git从库中移除已删除大文件

写在前面大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件.以后不管是拷贝,还是push/pull都比较麻烦.今天在上传工程到github上,发现最大只能上传100MB大小文件,在本地git库中有一个150MB文件,虽然已经删除,但还保存了记录.下面教大家如何从库中彻底删除无效大文件. 删除大文件方法很简单,就是先找到大文件对象再删除. 先提交所有更改 $ git commit -am "commit all"1对仓库进行gc操作 $ g

Web应用程序的敏感信息-隐藏目录和文件

Web应用程序的敏感信息-隐藏目录和文件 0x1.场景 Web应用程序根文件夹中可能存在大量隐藏信息:源代码版本系统文件夹和文件(.git,.gitignore,.svn),项目配置文件(.npmrc,package.json,.htaccess),自定义配置文件使用config.json,config.yml,config.xml等常见扩展以及许多其他扩展. 资源可以分为几个常见类别: 源代码版本控制系统 IDE(集成开发环境)配置文件 项目和/或技术特定的配置和设置文件 1.1.GIT Gi

linux删除大文件后空间没释放的问题

问题描述: 磁盘100%,删除大文件后,df -h发现磁盘空间未释放 解决办法: 该问题是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用. #lsof  |grep deleted #kill xxx     删除占用文件的进程 #df -h     再次查看磁盘空间

【原创】用JAVA实现大文件上传及显示进度信息

用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框架中使用类似CommonsMultipartFile对象处理表二进制文件信息. 而.NET 中使用HtmlInputFile/ HttpPostedFile对象处理二进制文件信息. 优点:使用框架内置对象可以很方便的

硬盘空间满,删除了大文件之后空间没有释放

1.硬盘空间满了 2.逐步查找大文件位置 du -sh /* 最后找到目标,并rm nohup.out删除该文件 3.再看空间并没有得到释放 4.原因是使用rm nohup.out,删除该文件,但该文件还被某个进程占用中,没有得到释放,我们可以使用 lsof | grep -i delete查看出删除的内容依然被进程占用,找到相应的进程kill掉即可完成释放. 来自为知笔记(Wiz)