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

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上去的那些敏感字段就没了!

相关推荐

  1. Git修改提交记录日期和提交信息

    2024-07-16 10:38:06       27 阅读
  2. 修改已经推送到远程仓库提交信息

    2024-07-16 10:38:06       18 阅读
  3. git撤销提交

    2024-07-16 10:38:06       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 10:38:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 10:38:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 10:38:06       58 阅读
  4. Python语言-面向对象

    2024-07-16 10:38:06       69 阅读

热门阅读

  1. js中! 、!!、?.、??、??=的用法及使用场景

    2024-07-16 10:38:06       21 阅读
  2. AP9185内置 MOS 管升压型恒流驱动芯片

    2024-07-16 10:38:06       24 阅读
  3. matlab实现绘制矢量图

    2024-07-16 10:38:06       27 阅读
  4. 实车部署 TARE 入门教程

    2024-07-16 10:38:06       27 阅读
  5. git环境编译升级

    2024-07-16 10:38:06       27 阅读
  6. Ubuntu系统和硬件问题

    2024-07-16 10:38:06       25 阅读