簡體   English   中英

使用 BFG repo-cleaner 后檢查 git repo

[英]Inspect git repo after using BFG repo-cleaner

非常基本的 git 問題:

我向 Github 上傳了一些妥協信息,並使用 bfg 來清理 repo。 我遵循了文檔並執行了以下操作:

$ git clone --mirror git://example.com/some-big-repo.git
$ bfg --replace-text passwords.txt  my-repo.git

我收到以下輸出:

Found 233 objects to protect
Found 9 commit-pointing refs : HEAD, refs/heads/experimental, refs/heads/master, ...

Protected commits
-----------------

These are your protected commits, and so their contents will NOT be altered:

 * commit 497fc1c8 (protected by 'HEAD')

Cleaning
--------

Found 80 commits
Cleaning commits:       100% (80/80)
Cleaning commits completed in 301 ms.

BFG aborting: No refs to update - no dirty commits found??

我想看看我的存儲庫中的私人信息是否已清除,但我不確定如何檢查鏡像存儲庫中的文件。 有什么想法嗎?

檢查密碼是否仍在您的歷史記錄中的一種快速方法可能是使用“git pickaxe”,也就是-S選項。 這是一個檢查字符串password1的示例:

git log -Spassword1

但是,從您的問題中顯示的輸出來看,看起來 BFG 在您的存儲庫中找不到來自passwords.txt任何條目(提示消息“未找到臟提交??”輸出),如果您確定它們在那里,這有點奇怪。 這是您第一次在 repo 上運行 BFG 嗎? 可能是第二次了,BFG已經把密碼去掉了?

您提供給 BFG 的passwords.txt文件每行應該有一個密碼,即:

changeme
password1
password2

默認情況下,BFG 僅查看 1MB 以下的文本文件。 您的密碼是否在某個看起來是二進制的或大於 1MB 的文件中?

更新:要查看 repo-clean-up 中的變化,您還可以嘗試 Eric S. Raymond 的repodiffer (他的reposurgeon項目的一部分): http : //www.catb.org/~esr/reposurgeon/repodifer.html -你像這樣使用它:

$ repodiffer old-repo-copy.git new-repo-copy.git

該腳本可能需要一段時間才能運行,但它會准確地告訴您這兩個存儲庫之間發生了什么變化。

完全披露:我是 BFG Repo-Cleaner 的作者。

我想在這里留下一個補充,因為我花了一個小時試圖弄清楚為什么我會收到相同的錯誤消息:

BFG aborting: No refs to update

我完全想不通為什么。

然后我意識到 BFG 和 git 一樣是區分大小寫的——我輸入的文件名都是小寫的,而 git 中的版本有一個大寫的首字母。

因為我在 Windows 上,所以我沒有想過這個 - 那里的文件系統不區分大小寫。

希望這會為其他人節省幾個小時的痛苦!

要仔細檢查您的存儲庫中是否不再存在特定的敏感數據,您可以使用以下命令:

git log --patch | grep --color=auto secret

或者使用less +/secret而不是grep在上下文中查看它。

在 OSX 上遇到了同樣的問題 2 小時。 在我的情況下,問題是 password.txt 文件(可能已損壞或其他)。 確保使用 vi/nano 通過終端創建 .txt。 不要使用 TextEdit 等工具創建它並更改擴展名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM