原本我的程式碼都託管在 BitBucket.org 上,選擇這家服務是因為他們的計費方式是算人頭的,而不是算專案數,對於我個人的小專案來說等於是無限的免費使用。
最近和幾個對程式開發有興趣的朋友、同事在 GitHub 上弄了 Private Repository,開始有了將幾個小專案丟過去讓大家參與開發的念頭。不過因為許多專案在初期我就把帳密等一些敏感訊息也跟著 commit 出去了,年輕不懂事。
需要把 repo 裡的敏感檔案刪除。
GitHub 有一篇教學文 Remove sensitive data。但是第一次耍蠢,忘記切換到 master 就下刪除指令,結果 history 變成這樣….
於是 git branch -D phpQRCode 移除了整條線。重下一次指令… 這樣的情況有點囧…. Tag 沒有移過去,不曉得是不是因為沒下 –tag-name-filter cat 的關係。總之,現在感到相當困擾。繼續研究怎麼處理。
[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
Leave a Reply