当前位置: 首页 > news >正文

如何通过git删除某个文件的历史提交记录

项目场景:

有时候我们在修改项目的配置信息时,不小心把一些敏感信息配置到项目当中,众所周知,git可以查看文件的所有的修改记录。此时就需要一个更加强大的工具,在不修改其它文件的修改记录,单单删除我们提交的那个文件的修改记录,就算查看文件git log也是没办法翻出铭感信息的

例如:我们项目当中的application.yml文件配置了一些敏感信息,后续考虑到这些敏感信息的安全风险,决定使用nacos去管理配置,需要将历史的提交信息给删除掉,假设我们想删除datasource相关的提交记录。

spring:profiles:active: testserver:max-http-header-size: 48000---
#生产环境配置
spring:profiles: prod#mysql数据库配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1/push?characterEncoding=utf8&useSSL=trueusername: pushpassword: pushhikari:max-lifetime: 120000

解决方案:

提示:通过git filter-branch去进行提交记录的过滤处理与删除,该操作有很大的风险,会强行的修改所有人对于这个文件修改的协同操作,请备份分支后操作

  • cd到项目路径下,隐藏文件.git文件的同级目录
  • 执行命令去删除某个文件的git提交记录,我这边还是拿我上边举例的application.yml文件操作
    git filter-branch --force --index-filter "git rm --cached --ignore-unmatch \
    src/main/resources/application.yml" --prune-empty --tag-name-filter cat -- --all
    
  • 执行过程中就会出现git提交记录的修改日志
    在这里插入图片描述
  • 执行完成后就会给出如下的提示
    在这里插入图片描述
  • 最后一步,需要将这写修改的记录强推到远程,至此该文件已经被项目删除,且提交记录也全都从git的日志列表当中删除,我们重新创建一个安全的application.yml进行重新提交即可
     git push origin --force --all
    
    在这里插入图片描述

相关文章:

  • 类-python
  • FISCO BCOS 智能合约开发详解
  • AlexNet网络搭建
  • 麒麟系统通过 Service 启动 JAR 包的完整指南
  • Lua 第12部分 日期和时间
  • Maven概述
  • 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
  • Netfilter 与struct nf_hook_ops 相关
  • C++?动态内存管理!!!
  • Taro on Harmony :助力业务高效开发纯血鸿蒙应用
  • 【数据挖掘】时间序列预测-常用序列预测模型
  • I-CON: A Unifying Framework for Representation Learning
  • 23种设计模式-行为型模式之命令模式(Java版本)
  • 从零实现分布式WebSocket组件:设计模式深度实践指南
  • 【Linux网络与网络编程】13.五种 IO 模型
  • Zookeeper HA集群搭建
  • 使用vue2 开发一个纯静态的校园二手交易平台-前端项目练习
  • 区块链:去中心化应用(DApp)开发全流程解析
  • 全栈量子跃迁:当Shor算法破解RSA时,我们如何用晶格密码重构数字世界的信任基岩?
  • 计算机三大主流操作系统的前世今生 - Linux|macOS|Windows
  • 北京朝阳涉住宅组团地块126亿元成交
  • 荣盛发展去年亏损约84.43亿元,要“过苦日子、紧日子”
  • 热点问答|第三轮间接谈判结束,美伊分歧还有多大?
  • 【社论】用生态环境法典守护生态文明
  • 广州一人均500元的日料店回收食材给下一桌?市场监管部门介入调查
  • 持续更新丨伊朗港口爆炸事件已致406人受伤