Git提交了敏感信息,通过BFG工具撤回或修改很久之前已经提交的内容

news2024/9/21 19:40:59

Git 提交了敏感信息怎么办?

这篇文章的由来,由于自己在提交代码的时候不小心把服务器的ip地址,还有数据库的密码给push到github上面去了。那么问题来了,我这个已经是一个月之前的提交的呢,现在还能改吗?别慌答案当然是可以的!

情况1:commit 还没但是还没push的话就很简单了

git commit --amend

这里就不赘述了,有很多现在的解决方案,重点来看情况2.

情况2: 已经是很久之前push上去的代码怎么办?

这里其实也是有两种解决方案的:

  1. 就是github自己官方支持的修改但是比较麻烦 (我看了眼就放弃了)

  2. 使用第三方的方法 BFG Repo-Cleaner 官网 , GitHub。

这里他们支持的操作有很多感兴趣或者有需要的可以自己去探索,我这里就直接解释下我自己用的操作。我就是需要把我的IP地址和密码那些在git commit中通过文本替换了就行了,不是直接删除。

  • 第一步先去官网下载 jar 包
  • 编写一个 replace.txt 的文件用来做替换
    在这里插入图片描述

这里就是会搜索我所有git commit提交过的文件,会寻找 127.0.0.1 然后全部替换成我的环境变量 ${my_ip} 。下面的两行也就是一样的了寻找 name: admin 然后替换成 name: ${Security_Username} ,个人感觉还是比较好用的。

当然如果你想直接删除这个 127.0.0.1 也是可以的就不用在后面跟随 ==>${my_ip} 这些内容了,而是会直接删除这个commit的内容。

PASSWORD1                       # Replace with '***REMOVED***' (default)
PASSWORD2==>examplePass         # replace with 'examplePass' instead
PASSWORD3==>                    # replace with the empty string
regex:password=\w+==>password=  # Replace, using a regex
regex:\r(\n)==>$1               # Replace Windows newlines with Unix newlines

这个是引用这位大佬的笔记 DebugTalk

  • 上面的文本编写完之后就可以去我们项目的git去运行指令了
java -jar <前面第一步下载的jar文件路径> --replace-text <上一步编写的replace.txt文件路径>

​ Example:

java -jar /Users/richard/Downloads/bfg-1.14.0.jar --replace-text /Users/richard/Downloads/replace.txt

这一步如果大家运行有问题的话大概率就是你的replace.txt文件有问题,自习去对照修改下 就好了

  • 上一步的指令运行完之后应该会输出一个结果了,注意这个时候还没有改变任何东西,结果的最后应该会提示这么一个指令大家直接复杂粘贴然后运行:

    git reflog expire --expire=now --all && git gc --prune=now --aggressive  
    
  • 最后一步push很重要,一定要push到GitHub上面去,否则前面全白做。

    git push origin --force --all                                         
    git push origin --force --tags
    

到这里就大功告成了,刷新下GitHub果然自己一个月前愚蠢的push上去的那些敏感字段就没了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SIM900发送中文短信的处理过程

SIM900发送中文短信的处理过程 1、短信中心号码处理: 短信中心号码可以使用ATCSCA?获取。 在获取之前&#xff0c;最好将设置使用GSM字符&#xff1a; ATCSCS"GSM" OK ATCSCA? CSCA: "8613800755500",145 OK 这样一来&#xff0c;我就得…

Python酷库之旅-第三方库Pandas(023)

目录 一、用法精讲 58、pandas.isnull函数 58-1、语法 58-2、参数 58-3、功能 58-4、返回值 58-5、说明 58-6、用法 58-6-1、数据准备 58-6-2、代码示例 58-6-3、结果输出 59、pandas.notna函数 59-1、语法 59-2、参数 59-3、功能 59-4、返回值 59-5、说明 5…

线程的复习

目录 大纲Java中的线程概念创建线程的方法线程的生命周期线程的同步和通信线程的优先级和调度线程的中断 案例 大纲 Java中的线程概念 在Java中&#xff0c;线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中实际运作的部分。一个…

python单测框架之pytest常见用法

单测框架的作用 测试发现&#xff1a;从多个文件中寻找测试用例。测试执行&#xff1a;按照一定顺序去执行并且生成结果。测试断言&#xff1a;判断最终结果与实际结果的差异。测试报告&#xff1a;统计测试进度、耗时、通过率&#xff0c;生成测试报告。 pytest简介 pytest是…

51单片机10(蜂鸣器介绍)

一、蜂鸣器介绍&#xff1a; 1、蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电&#xff0c;广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器。 &#xff08;1&#xff09;压电式蜂鸣器&#xff0c;它主要由多谐的一个增胀器…

Cyber Weekly #15

赛博新闻 1、OpenAI 绝密项目「草莓」首次曝光 据外媒路透社报道&#xff0c;OpenAI 内部正在一个代号为「草莓&#xff08;Strawberry&#xff09;」的项目中开发一种新的人工智能模型。该模型细节此前从未被报道过&#xff0c;而 OpenAI 正在努力证明该模型类型能够提供高级…

C++客户端Qt开发——信号和槽

三、信号和槽 1.信号和槽概述 在Qt中&#xff0c;用户和控件的每次交互过程称为一个事件。比如"用户点击按钮”是一个事件&#xff0c;"用户关闭窗口”也是一个事件。每个事件都会发出一个信号&#xff0c;例如用户点击按钮会发出"按钮被点击"的信号&…

ensp防火墙智能选举综合实验

实验要求&#xff1a; 实验图&#xff1a; 新增配置&#xff1a; 路由isp: 7&#xff1a; 保留ip操作&#xff1a; 一、DX区域&#xff1a; 1、源地址池配置&#xff1a; 2、nat策略&#xff1a; nat安全策略配置&#xff1a; 二、YD&#xff1a; 1、源地址池配置&#xf…

最值得推荐的10款Windows软件!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频播放量破百万https://aitools.jurilu.com/1.音乐播放器——Dopamine Dopamine是一款音乐播放器&#xff0c;设计简洁美观。它支持多种音频格式&#xff0c;包括wav、mp3、ogg…

平衡树——AcWing 253. 普通平衡树

平衡树 定义 平衡树是一种自平衡的二叉搜索树&#xff0c;它在进行插入和删除操作后能够自动调整其结构&#xff0c;以保持树的高度尽可能低&#xff0c;从而保证树的查找、插入和删除操作能够在对数时间内完成。最著名的平衡树有AVL树和红黑树。 AVL树&#xff1a;是一种严格…

10月23-25日|2024年武汉袋式除尘展重磅来袭

2024第六届&#xff08;武汉&#xff09;国际袋式除尘技术与设备展览会 时间&#xff1a;2024年10月23-25日 地点&#xff1a;武汉国际文化博览中心 展会介绍&#xff1a; 2024第6届&#xff08;武汉&#xff09;国际袋式除尘技术与设备展览会将于2024年10月23-25日在武汉文…

Linux进程理解

一、进程的理解 首先我们知道我们的操作其实都是在运行程序&#xff0c;不仅是在windows上打开软件还是在Linux上执行指令&#xff0c;而程序存在于磁盘上&#xff0c;程序的要想运行就要把程序的代码和数据从磁盘加载到内存&#xff0c;那么到这一步是创建了一个进程吗&#…

c#中的特性

在C#中&#xff0c;特性&#xff08;Attributes&#xff09;是一种向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的方式。特性可以用来提供关于程序元素的附加信息&#xff0c;这些信息可以在编译时和运行时被访问。 特性主要有以下几个用途&#xff1a; 提…

北京交通大学《深度学习》专业课,实验2-前馈神经网络

1. 源代码 见资源“北京交通大学《深度学习》专业课&#xff0c;实验2-前馈神经网络” 2. 实验内容 &#xff08;1&#xff09;手动实现前馈神经网络解决上述回归、二分类、多分类任务 分析实验结果并绘制训练集和测试集的loss曲线 &#xff08;2&#xff09;利用to…

GUI界面开发之tkinter(一)

Tkinter是一个内置的Python库&#xff0c;用于创建图形用户界面&#xff08;GUI&#xff09;。它提供了一组工具和小部件&#xff0c;用于创建窗口、对话框、按钮、菜单和其他GUI元素。 在本篇文章中&#xff0c;主要介绍了窗口等知识点。 大家好&#xff01;我是码银&#x1…

STM32MP135裸机编程:烧录程序到EMMC的方法

0 前言 STM32MP135支持多种启动方式&#xff0c;包括SD卡、NAND Flash、EMMC等&#xff0c;基于STM32MP135裸机的SD卡烧录操作方法我们之前已经介绍过&#xff0c;现在介绍的STM32MP135烧录到EMMC的方法又和前面烧录到SD卡的操作有所不同。本文将介绍基于STM32MP135&#xff0…

缓存的击穿及解决方案

定义及图解 缓存击穿的意思是对于设置了过期时间的key&#xff0c;缓存在某个时间点过期的时 候&#xff0c;恰好这时间点对这个Key有大量的并发请求过来&#xff0c;这些请求发现缓存过期一般都会从后端 DB 加载数据并回设到缓存&#xff0c;这个时候大并发的请求可能会瞬间把…

Flutter 调用Google内购支付最新教程

前言: 各位同学大家好, 之前看到有人在群里问flutter 怎么调用Google支付, 今天就准备整理写一篇文章。 效果图 实现方式: 我们是通过flutter和安卓交互 然后在原生安卓里面加入了内购支付结算库的依赖 最后调起的Google 支付 安卓原生内购支付教程 flutter 端代码 我…

Go: IM系统开发及注意事项

概述 使用Go语言打造支持&#xff0c;同时十万人在线的IM系统系统单机支持十万人&#xff0c;如果分布式部署后&#xff0c;支持数百万都是可以的IM 系统&#xff0c; 即时通讯(Instant Messaging)&#xff0c;比如说我们的微信&#xff0c;QQ 等IM 系统&#xff0c;它具备非常…

软件测试服务公司分享:系统测试和验收测试有什么联系和区别?

软件系统测试是指对软件系统的各个模块、组件以及整个系统进行全面检查和验证的过程。它旨在检测系统的功能是否符合需求、是否能够正常运行以及是否存在潜在的问题。在软件开发的整个生命周期中&#xff0c;系统测试是一个非常重要且必不可少的环节。 软件验收测试是软件在开…