git 删除历史提交中的某个文件,包含所有记录,过滤所有记录

2023-05-16

git 删除历史提交中的某个文件,包含所有记录,过滤所有记录

一、问题描述

有时候,我们需要删除历史记录中的某个文件。
比如在你开发一个项目的时候,刚开始是闭源的,里面可能包含一些比较敏感的信息,用户名和密码等,后来想将这个项目开源了,但这些用户名和密码的配置文件已经存在于 git 历史中,这时候就需要用到这个功能

二、解决办法

StackOverflow 解答参阅:https://stackoverflow.com/a/52643437/8086267

实现这个目标,需要用到 git 的 filter-branch 命令,

1. 执行

比如我就有这么个项目,里面的配置文件中包含了一些敏感信息,这样操作:

注意:建议在执行前将对应的文件备份下,以便之后修改并恢复这个文件

git filter-branch -f  --index-filter 'git rm -rf --cached --ignore-unmatch 这里替换成你要删除的文件路径和文件名' HEAD

比如我要删除的文件是 config/configDB.js 后来又重命名成了 config/configDatabase.js,那我就需要进行两次操作

git filter-branch -f  --index-filter 'git rm -rf --cached --ignore-unmatch config/configDB.js' HEAD
git filter-branch -f  --index-filter 'git rm -rf --cached --ignore-unmatch config/configDatabase.js' HEAD

执行指令后,它会等待一会再执行,好让你有个反悔的过程,如果这期间你不按下 ctrl+c撤消键,命令将正常执行。

2. 执行过程:在这里插入图片描述

3. 恢复这个文件

上面已经删除了这个包含敏感信息的文件。再生成一个新的文件,里面的内容中将敏感信息去掉,再提交即可。

4. 强制覆盖线上的 git 记录

完成上述步骤后, 执行以下指令,将本地的提交记录,强制覆盖线上的。

git push origin --force --all

三、结果

可以看到,线上的 git 中只有最新的提交记录,之前带密码的提交记录已经全部删除了
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 删除历史提交中的某个文件,包含所有记录,过滤所有记录 的相关文章

  • 2019学习计划

    1 数据结构与算法 2 架构设计
  • org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常

    org apache tomcat util modeler BaseModelMBean invoke 调用方法 manageApp 时发生异常 主要是因为Webservlet代码地址填写错误导致 xff0c 我总结了几点可能错误的情况
  • QT中目录与文件分离

    QDir dir fullPath QFileInfo file file 61 QFileInfo fullPath fullPath 61 file absolutePath
  • kali-win-kex 无法启动,kex kill, kex start, vncserver都无法启动的解决方案

    一行代码解决标题痛点 wsl set version kali linux span class token number 2 span 上述代码是将 kali 发行版的 wsl 设置为version 2 参考官方地址 xff1a 官网地址
  • 重磅!美国最新14类技术出口管制来了,想买的基本都买不到了

    根据2018年国会通过的 出口管制改革法案 xff08 Export Control Reform Act xff09 要求 xff0c 美国商务部工业安全署 xff08 Department of Commerce Bureau of I
  • Linux访问群晖NAS共享文件夹

    Linux访问群晖NAS共享文件夹 前提条件 启动NFS服务打开共享的文件夹Linux配置连接结果 前提条件 1 linux系统 xff0c 当前centos 7 2 NAS系统 xff0c 当前DS3615 启动NFS服务 高级设置 默认
  • 马上 2018 年了,该不该下定决心转型AI呢?

    本文授权转自知乎 如此火爆的AI xff0c 会不会像Android和iOS一样 xff0c 五年后归于平淡 xff1f 转型AI真的有必要吗 xff1f 2017年 xff0c AI就像一个点石成金的神器 xff0c 所有的行业 xff0
  • Ubuntu开机进入tty1

    Ubuntu开机进入tty1 Ubuntu是常用的Linux发行版 其中 xff0c Ubuntu desktop XUbuntu LUbuntu等安装的过程中 xff0c 会安装图形界面 xff0c 而Ubuntu server xff0
  • Windows终端的美化

    Windows终端的美化 需要下载Windows Terminal Preview如果没有就上Windows store上面下载一个 xff1b 下载以后在桌面右键打开终端 xff1a 打开设置 xff1a 找到默认值 xff1a 找到外观
  • Linux上的文件类型与默认图标(转)

    发布时间 xff1a 2018 12 12 17 43 09 点击次数 xff1a 2598 引言 也许小伙伴们对 Linux 已经有一定程度的了解 xff0c 或者已经是一名能够在工作和生活中活用它的 Linux 用户了 随着桌面环境的不
  • 平衡二叉树

    满二叉树一定是一颗平衡二叉树 平衡二叉树 xff1a 对于任意一个节点 xff0c 左子树和右子树的高度差不能超过1 平衡二叉树的高度和节点数量之间的关系也是O xff08 logn xff09 的 节点的高度等于左右子树中最高的节点的高度
  • centos / redhat 版本防火墙配置之firewall-cmd配置

    检查服务器版本 cat etc redhat release 是centos 7 redhat 7 或以上版本的可以配置firewall 是centos 6 redhat 6 及一下版本的需要配置iptables 检查firewall状态是
  • 运行x程序出现:Can't open display 原因及其解决方法

    因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上 如果需要别的用户的图形显示在当前屏幕上 则应以当前登陆的用户 也就是切换身份前的用户执行如下命令 xhost 43 xhost 43 的作用 xhost 是用来控制
  • ORACLE数据库管理员的职责

    ORACLE数据库管理员的职责 一 xff0e 概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控 xff1a 1 每天对ORACLE数据库的运行状态 xff0c 日志文件 xff0c 备份情况 xff0c 数据库
  • 实用webpack插件之ProvidePlugin

    现代化前端的全局引入是一个很有趣的东西 先来看下以下几个场景 xff1a 在webpack中 xff0c 我们可以在resolve的alias中定义一个层级较高的目录为一个自定义变量 例如resolve alias 64 path join
  • Conda&&Pip 使用

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 一 conda 配置环境 1 查看conda版本 2 升级conda版本 3 修改conda下载源渠道 4 conda删除追加的下载
  • IDEA2022.1创建maven项目,规避idea2022新建maven项目卡死,无反应问题

    idea 2022的新建项目和旧的不一样 选择maven archetype 输入 name xff08 项目名称 xff09 location xff08 项目文件路径 xff09 jdk 1 8 catalog xff1a 目录 xff
  • tightvnc绿色版,细数4款超好用的tightvnc绿色版

    在使用tightvnc软件时 xff0c 通常都希望能找到绿色版软件 xff0c 那大家知道有哪些tightvnc绿色版软件吗 xff1f 你所使用过的tightvnc绿色版软件又有哪些呢 xff1f 接下来让我们一起来看看那些超好用的ti
  • 修改 FTP 文件夹 权限 Linux

    cd 到根目录 1 例如FTP服务器根目录是aliRoot cd aliRoot 2 指定一个文件夹修改权限 xff1b 命令 xff1a chmod R 777 goodlist 现在 aliRoot goodlist 文件夹下就可以上传
  • Linux命令大全: mkdir命令 - 创建目录

    1 详解 mkdir命令是 make directories 的缩写 xff0c 用来创建目录 注意 xff1a 默认状态下 xff0c 如果要创建的目录已经存在 xff0c 则提示已存在 xff0c 而不会继续创建目录 所以在创建目录时

随机推荐