移除 Git Repo 中的敏感資料… [solved]

原本我的程式碼都託管在 BitBucket.org 上,選擇這家服務是因為他們的計費方式是算人頭的,而不是算專案數,對於我個人的小專案來說等於是無限的免費使用。

最近和幾個對程式開發有興趣的朋友、同事在 GitHub 上弄了 Private Repository,開始有了將幾個小專案丟過去讓大家參與開發的念頭。不過因為許多專案在初期我就把帳密等一些敏感訊息也跟著 commit 出去了,年輕不懂事

需要把 repo 裡的敏感檔案刪除。

GitHub 有一篇教學文 Remove sensitive data。但是第一次耍蠢,忘記切換到 master 就下刪除指令,結果 history 變成這樣….

git_error_1

於是 git branch -D phpQRCode 移除了整條線。重下一次指令… 這樣的情況有點囧…. Tag 沒有移過去,不曉得是不是因為沒下 –tag-name-filter cat 的關係。總之,現在感到相當困擾。繼續研究怎麼處理。

git_error_2

 

 

[Updated: 2013-04-22]

後來用 rebase 先整理過 history 後,用以下指令移除檔案。

git filter-branch -f --tag-name-filter cat --index-filter 'git rm --cached --ignore-unmatch -- path/file' --prune-empty -- --all

藍字是要移除的檔案,紅字 -f 是如果先前已經使用過 filter-branch 指令,則 git 會自動產生一份備份,-f 是強制覆蓋掉之前的備份。如果要還原到 filter-branch 之前的狀態,用以下指令。

git reset --hard refs/original/master

Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *