GitHub做爲全球最大的交友平臺而被咱們所熟知,可是咱們有時候會將某些不適當的信息發佈到網絡上去,而GitHub並無良好的交互界面讓咱們能在兩分鐘內撤回錯誤。java
做爲世界上比較有名的犬種,在將我的的某些帳號信息以及某些資源(捂臉)徹底公開以後,心裏沒有絲毫波動,甚至有點想笑,我爲何會出現這種破問題。git
本着萬事開頭難,中間難,結尾難的想法,在被世人所不齒以前,踏上自救之路。github
方案一:刪庫算法
方案二:使用 BFG Repo-Cleaner 刪除(三個步驟,前兩步可直接跳過,着急自救的同窗可直接到 開始刪除數據)segmentfault
首先:將當前版本的某些數據刪掉(作完這一步以後忽然意識到我可能連有名的犬種都不算);安全
其次:將倉庫設爲私有(此時已經能免費設置私有倉庫了,先謝謝一下微軟),打開GitHub Help(GitHub對我這種曾經沒用功讀書的人很是不友好,學霸讀到這就能夠跳過閱讀原文),輸入 removing sensitive 的時候,出現了幾個提示引發個人注意:網絡
最後:刪除敏感數據,文章大概意思以下:app
若是你提交了敏感數據,例如密碼或者SSH祕鑰之類的到Git倉庫, 你能夠從歷史中刪掉他們。想徹底刪除不想要的文件歷史記錄你可使用 git filter-branch
命令或者 BFG Repo-Cleaner 開源社區工具。工具
git filter-branch
命令和 BFG Repo-Cleaner 能夠重寫你的倉庫歷史,他們能夠更改目前存在的任何單獨提交記錄的或者有依賴的提交記錄(SHA意思爲哈希算法,可理解爲提交記錄)。修改提交記錄可能會影響正在使用的 pull request,咱們建議在進行清除敏感數據以前進行必要的合併或關閉請求。spa
你也可使用 git rm
命令來刪除文件。關於刪除最新提交文件的信息可移步「Removing files from a repository's history」。
警告:一旦你提交到GitHub,應該考慮到數據可能會受到的任何影響。若是提交了密碼,修改密碼,提交了祕鑰,及時換一個新的。
本文將闡述……(到這已經記不清英語老師長什麼樣了)
使用 BFG
BFG Repo-Cleaner 是一個由開源社區開發且維護的工具,它提供了比git filter-branch
更加簡便快捷的方法來刪除不想要的數據。好比,刪除你文件中的敏感數據且不影響最新的提交,執行:
$ bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
能夠在password.txt
中列出全部文原本進行替換,執行:
$ bfg --replace-text passwords.txt
具體使用文檔和下載說明請移步 https://rtyley.github.io/bfg-...
讀到這正文終於要開始了,但GitHub惜字如金,好在BFG託管在GitHub上,在官網上下載bfg.jar,並安裝Java環境,Java環境的安裝很是簡單,我就不在此說明了。
首先克隆你的項目,並使用--mirror
:
$ git clone --mirror git://example.com/repo.git
克隆完後接着就能夠執行以前下載的bfg.jar,將jar放到克隆項目後的文件夾內,和repo.git(此處項目名會不一樣)同級,YOUR-FILE-WITH-SENSITIVE-DATA是你包含敏感信息的文件名,不用寫明路徑:
java -jar bfg.jar --delete-files YOUR-FILE-WITH-SENSITIVE-DATA repo.git
執行結束後會出現以下結果(咱們以刪除application.yml文件爲例)
進入到repo.git下,咱們還需執行git gc命令:
cd repo.git $ git reflog expire --expire=now --all && git gc --prune=now --aggressive
最後,咱們將修改結果提交:
$ git push
理論上到這已是清除掉記錄了,個人提交記錄確實也變了,可是仍是能找到某些羞羞的數據,由於以前在第一步的時候將這個文件給刪掉了,因而又把文件提交到倉庫,而後在執行上述步驟,終於危機解除,英雄又一次拯救了世界,散花以前還想提醒一下,執行完 bfg-1.13.0.jar 及相關命令後結果會有幾行「奇怪」的文字,讓我再復現一下。
最後撒花(下文主要翻譯了刪除敏感數據策略的部份內容,該策略主要針對filter-branch)。
使用 filter-branch
因爲使用filter-branch還須要提交刪除請求,畢竟要解釋刪除的數據是幹嗎的(捂臉),何況BFG自稱速度是filter-branch的10~720倍。感興趣的同窗能夠對下面這種複雜的方法瞭解一下。
如下是數據移除策略的部份內容,官方列舉了什麼是敏感數據以及一些注意事項,以及解釋了GitHub如何移除這些數據,還有如何發送移除數據請求以及請求內容應包含事項(下圖)等。
圖中的大概意思是:
因爲鏈接GitHub主機的內容以及管理方式的不一樣,咱們須要你提供的信息越具體越好,爲了確保咱們覈實用戶並可以完全移除敏感數據,咱們須要知道從哪開始。
如下幾點簡單說明了移除敏感數據的步驟。
你的請求內容應該有:
如何提交請求
你能夠將刪除請求發送到 support@github.com
或者經過GitHub的 Contact form 提交,請在郵件正文中包含一份純文本格式的請求,郵件攜帶附件的話可能會存在處理延遲。
原創不易,感謝支持。