Git上傳了秘鑰如何徹底修改包括歷史記錄【從安裝到實戰詳細版】

使用 BFG Repo-Cleaner 清除 Git 倉庫中的敏感信息

1. 背景介紹

在使用 Git 進行版本控制時,有時會不小心將敏感信息(如 API 密鑰、密碼等)提交到倉庫中。即使后續刪除,這些信息仍然存在于 Git 的歷史記錄中。本文將介紹如何使用 BFG Repo-Cleaner 工具徹底清除這些敏感信息。

2. 準備工作

2.1 環境要求

  • Java 運行環境(JRE 8 或更高版本)
  • Git 客戶端
  • 需要清理的 Git 倉庫

2.2 下載 BFG

  1. 訪問 BFG 官方下載頁面:https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/
  2. 下載 bfg-1.13.0.jar 文件
  3. 將下載的 jar 文件放在你的項目父目錄下

3. 使用步驟

  • 我的yml 文件
mybatis:mapper-locations: classpath:mappers/*xmltype-aliases-package: cn.yam.mcp.entity
server:port: 9091
spring:datasource:url: jdbc:mysql://localhost:3306/mcp-test-dbusername: rootpassword: 1234driver-class-name: com.mysql.cj.jdbc.Driverdeepseek:api-key: sk-1234logging:level:root: INFO                # 全局日志級別
#    org.springframework: DEBUG # Spring 框架的日志
#    org.springframework.web: DEBUG # Spring Web 的日志
#    org.springframework.jdbc: DEBUG # Spring JDBC 的日志

3.1 創建替換規則文件

  1. 在項目父目錄下創建 secrets.txt 文件
  2. 添加替換規則,例如:
regex:sk-[a-zA-Z0-9]{32}==>***REMOVED***
regex:api-key:.*==>api-key: ***REMOVED***

這里的規則說明:

  • 第一行匹配形如 sk- 開頭的 32 位字符的 API 密鑰
  • 第二行匹配整個 api-key 配置行

3.2 目錄結構示例

spring4test_proj/
├── bfg-1.13.0.jar
├── secrets.txt
└── Spring-MCP-starter/    # 你的 Git 倉庫

3.3 執行清理命令

在項目父目錄下執行:

java -jar bfg-1.13.0.jar --replace-text secrets.txt Spring-MCP-starter --no-blob-protection

參數說明:

  • --replace-text secrets.txt: 指定替換規則文件
  • Spring-MCP-starter: 指定要清理的倉庫目錄
  • --no-blob-protection: 允許修改最新的提交

3.4 清理和更新

進入倉庫目錄,執行:

cd Spring-MCP-starter
git reflog expire --expire=now --all && git gc --prune=now --aggressive

3.5 推送更改

git push origin --force --all

4. 注意事項

  1. 在執行清理前,確保已備份重要數據
  2. 使用 --force 推送會重寫遠程倉庫的歷史,團隊其他成員需要重新克隆倉庫
  3. 清理后要立即修改已泄露的密鑰
  4. 建議在 .gitignore 中添加包含敏感信息的文件
  5. 考慮使用環境變量或配置管理工具來管理敏感信息

5. 最佳實踐

  1. 使用配置模板文件

    # application.yml.template
    deepseek:api-key: ${DEEPSEEK_API_KEY}
    
  2. .gitignore 中添加

    application.yml
    
  3. 使用環境變量或專門的配置管理工具存儲敏感信息

參考資料

  • BFG Repo-Cleaner 官方文檔
  • Git 文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66953.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多層 RNN原理以及實現

數學原理 多層 RNN 的核心思想是堆疊多個 RNN 層,每一層的輸出作為下一層的輸入,從而逐層提取更高層次的抽象特征。 1. 單層 RNN 的數學表示 首先,單層 RNN 的計算過程如下。對于一個時間步 t t t,單層 RNN 的隱藏狀態 h t h_t…

RNA 測序技術概覽(RNA-seq)

前言 轉錄組測序(RNA-seq)是當下最流行的二代測序(NGS)方法之一,使科研工作者實現在轉錄水平上定量、定性的研究,它的出現已經革命性地改變了人們研究基因表達調控的方式。然而,轉錄組測序&…

C語言練習(16)

猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半加一個。到第10天早上想再吃時,見只剩一個桃子了…

【機器學習】自定義數據集使用框架的線性回歸方法對其進行擬合

一、使用框架的線性回歸方法 1. 基礎原理 在自求導線性回歸中,我們需要先自定義參數,并且需要通過數學公式來對w和b進行求導,然后在反向傳播過程中通過梯度下降的方式來更新參數,從而降低損失值。 2. 實現步驟 ① 散點輸入 有一…

pytest執行報錯:found no collectors

今天在嘗試使用pytest運行用例的時候出現報錯:found no collectors;從兩個方向進行排查,一是看文件名和函數名是不是符合規范,命名要是"test_*"格式;二是是否存在修改文件名的情況,如果修改過文件…

mysql-06.JDBC

目錄 什么是JDBC: 為啥存在JDBC: JDBC工作原理: JDBC的優勢: 下載mysql驅動包: 用java程序操作數據庫 1.創建dataSource: 2.與服務端建立連接 3.構造sql語句 4.執行sql 5.關閉連接,釋放資源 參考代碼: 插…

微信小程序wxs實現UTC轉北京時間

微信小程序實現UTC轉北京時間 打臉一刻:最近在迭代原生微信小程序,好一段時間沒寫原生的,有點不習慣; 咦,更新數據咋不生效呢?原來還停留在 this.xxx; 喲,事件又沒反應了&#xff1f…

機器學習-線性回歸(對于f(x;w)=w^Tx+b理解)

一、𝑓(𝒙;𝒘) 𝒘T𝒙的推導 學習線性回歸,我們那先要對于線性回歸的表達公示,有所認識。 我們先假設空間是一組參數化的線性函數: 其中權重向量𝒘 ∈ R𝐷 …

R語言學習筆記之語言入門基礎

一、R語言基礎 快速熟悉R語言中的基本概念&#xff0c;先入個門。 1、運算符 運算符含義例子加1 1-減3 - 2*乘3 * 2/除9 / 3^(**)乘方2 ^ 3 2 ** 3%%取余5 %% 2%/%取整5 %/% 2 2、賦值符號 等號a 1三者等價&#xff1a;把1賦值給變量a左箭頭<?a <- 1右箭頭?&g…

計算機網絡三張表(ARP表、MAC表、路由表)總結

參考&#xff1a; 網絡三張表&#xff1a;ARP表, MAC表, 路由表&#xff0c;實現你的網絡自由&#xff01;&#xff01;_mac表、arp表、路由表-CSDN博客 網絡中的三張表&#xff1a;ARP表、MAC表、路由表 首先要明確一件事&#xff0c;如果一個主機要發送數據&#xff0c;那么必…

【Nomoto 船舶模型】

【Nomoto 船舶模型】 1. Nomoto 船舶模型簡介2. 來源及發展歷程3. 構建 一階模型Nomoto 船舶模型3.1 C 實現3.2 Python 實現3.3 說明 5. 參數辨識方法5.1 基于最小二乘法的參數辨識5.2 數學推導5.3 Python 實現5.4 說明 4. 結論參考文獻 1. Nomoto 船舶模型簡介 Nomoto 模型是…

差分進化算法 (Differential Evolution) 算法詳解及案例分析

差分進化算法 (Differential Evolution) 算法詳解及案例分析 目錄 差分進化算法 (Differential Evolution) 算法詳解及案例分析1. 引言2. 差分進化算法 (DE) 算法原理2.1 基本概念2.2 算法步驟3. 差分進化算法的優勢與局限性3.1 優勢3.2 局限性4. 案例分析4.1 案例1: 單目標優化…

深入理解GPT底層原理--從n-gram到RNN到LSTM/GRU到Transformer/GPT的進化

從簡單的RNN到復雜的LSTM/GRU,再到引入注意力機制,研究者們一直在努力解決序列建模的核心問題。每一步的進展都為下一步的突破奠定了基礎,最終孕育出了革命性的Transformer架構和GPT大模型。 1. 從n-gram到循環神經網絡(RNN)的誕生 1.1 N-gram 模型 在深度學習興起之前,處理…

【JWT】jwt實現HS、RS、ES、ED簽名與驗簽

JWT 實現 HS、RS、ES 和 ED 簽名與驗簽 簽名方式算法密鑰類型簽名要點驗簽要點HSHMAC-SHA256對稱密鑰- 使用 crypto/hmac 和對稱密鑰生成 HMAC 簽名- 將 header.payload 作為數據輸入- 使用同一密鑰重新計算 HMAC 簽名- 比較計算結果與接收到的簽名是否一致RSRSA-SHA256公鑰 …

地址欄信息location

獲取信息 頁面跳轉 location.href當前地址欄信息 location.assign()設置跳轉新的頁面 location.replace() location.reload()刷新頁面

程序員轉型測試:解鎖漏洞挖掘新旅程

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 程序…

StarRocks常用命令

目錄 1、StarRocks 集群管理&配置命令 2、StarRocks 常用操作命令 3、StarRocks 數據導入和導出 1、StarRocks 集群管理&配置命令 查詢 FE 節點信息 SHOW frontends; SHOW PROC /frontends; mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC /dbs;"…

08-ArcGIS For JavaScript-通過Mesh繪制幾何體(Cylinder,Circle,Box,Pyramid)

目錄 概述代碼實現1、Mesh.createBox2、createPyramid3、Mesh.createSphere4、Mesh.createCylinder 完整代碼 概述 對于三維場景而言&#xff0c;二位的點、線、面&#xff0c;三維的圓、立方體、圓柱等都是比較常見的三維對象&#xff0c;在ArcGIS For JavaScript中我們知道點…

Linux中page、buffer_head、bio的關系

在Linux中&#xff0c;page、buffer_head、bio這三個概念緊密相關&#xff0c;共同構成了塊設備I/O和內存管理的重要部分&#xff0c;它們的聯系主要體現在以下方面&#xff1a; page與buffer_head 基于page構建&#xff1a;buffer_head通常是基于page來構建的&#xff0c;一…

直線擬合例子 ,嶺回歸擬合直線

目錄 直線擬合,算出離群點 嶺回歸擬合直線&#xff1a; 直線擬合,算出離群點 import cv2 import numpy as np# 輸入的點 points np.array([[51, 149],[122, 374],[225, 376],[340, 382],[463, 391],[535, 298],[596, 400],[689, 406],[821, 407] ], dtypenp.float32)# 使用…