Git 如何清理敏感文字

有時候我們會在屬性檔案中新增資料庫的連線引數等。

但是在提交的時候不小心將這些敏感連線引數和密碼也提交到伺服器上了。

雖然很多公司都有防火牆只能內部訪問,但是還是非常不安全的。

這時候你需要一個 BFG Repo-Cleaner 這個工具了。

這個工具主要用於清理倉庫中的敏感文字包括提交歷史記錄中的,同時也一併將歷史記錄清理。

下載

下載地址為:BFG Repo-Cleaner by rtyley ,你會下載一個 jar 的包。

假設我們需要清理倉庫名稱為:rets-io-client,你首先需要將這個倉庫克隆到本地。

然後把下載的包放在和這個倉庫同級的目錄中。

假設我們的倉庫地址為:D:/WorkDir/USRealEstate/Source-Code/rets-io-client

那麼你可以將這個包放在:D:/WorkDir/USRealEstate/Source-Code 目錄下面。

同時在 D:/WorkDir/USRealEstate/Source-Code 目錄下面建立一個 passwords.txt 檔案

執行命令

在控制檯中執行下面的命令:

java -jar bfg-1.14.0.jar --replace-text passwords.txt rets-io-client

將你需要替換的字串放到 passwords.txt 檔案中。

例如我們需要替換的密碼為 jfnsV4yHsDYaX4x9 那麼你需要將這個字串新增到 passwords.txt 後再執行上面的命令。

執行後的結果如上圖的內容。

如果你有多個字串需要替換的話,可以重複上面的操作。

在完成上面的所有替換後,進入倉庫分別執行下面的 2 條 git 命令。

git reflog expire --expire=now --all

git gc --prune=now --aggressive

如果一切都沒有問題的話,再執行 git push 將修改推送到遠端倉庫中。

此時再檢視你的提交記錄,所有敏感字串應該都被替換掉了。

在提交歷史中的字串也會被替換成不可見的字元了。