2014-01-06 44 views
3

非常基本的Git問題後:檢查git倉庫使用BFG回購清潔

我上傳了一些影響信息Github上,並正在使用高爐煤氣清洗回購。我跟着文檔和執行以下操作:

$ 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?? 

我想看看如果私人信息是從我的回購清除,但我不確定如何檢查鏡像回購中的文件。有任何想法嗎?

回答

4

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

git log -Spassword1 

不過,從你的問題中顯示的輸出,它看起來像BFG找不到任何從passwords.txt條目在你的回購(提示訊息話題'沒有發現任何骯髒的提交??'你在輸出結束時看到),如果你確定它們在那裏,這有點奇怪。這是您第一次在回購中運行BFG嗎?也許這是第二次,BFG已經刪除了密碼?

passwords.txt文件你給BFG應該有每行一個密碼,即:

changeme 
password1 
password2 

的BFG只看文本文件1MB下默認。您的密碼是否可能顯示爲二進制或大於1MB的文件?

更新:對於看到的是在一個回購清理改變,你也可以嘗試埃裏克雷蒙的repodiffer(他reposurgeon項目的一部分):http://www.catb.org/~esr/reposurgeon/repodiffer.html - 你用這樣的:

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

該腳本可能需要一段時間才能運行,但它會準確告訴您這兩個回購之間的變化。

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

+0

謝謝。鎬是我正在尋找的。我最終只是決定使用標準的強力git-filter-branch方法來擦除種子文件的日誌歷史記錄(因爲它應該放在我的.gitignore中)。 – Tag0Mag0

+0

當然 - 如果你想完全刪除任何名爲'seeds'的文件,你也可以使用'bfg --delete-files seeds my-repo.git'。 –

+0

啊,非常好。再次感謝。 – Tag0Mag0

1

我想在這裏留下另外,因爲我花了一個小時試圖找出爲什麼我得到同樣的錯誤信息:

BFG aborting: No refs to update 

而且我絕對不能明白爲什麼。

然後我意識到BFG與git一樣,是區分大小寫 - 我輸入的文件名全部是小寫,而git中的版本有大寫首字母。

正如我在Windows上,我沒有想過 - 文件系統不區分大小寫。

希望這會爲別人節省幾個小時的痛苦!

0

要仔細檢查是否存在特定的敏感數據不存在於你的回購了,你可以使用下面的命令:

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

或使用less +/secret代替grep看到它在上下文。