リポジトリのファイルを履歴もろとも削除する方法

2013-09-04T00:00:00+00:00 git

リモートとかに要らんファイルとかがあってリビジョンとかで履歴として見れる場合とかだと思うけど、それをもろとも削除したい場合なケースに遭遇したのでメモ

適当なgitリポジトリを作って

echo "hoge" > hoge.txt
echo "fuga" > fuga.txt
git add -v .
git commit -am "initial commit"

でhoge.txtをリビジョンから履歴もろともファイルも削除したいとかの場合には

git filter-branch --index-filter "git rm --cached --ignore-unmatch hoge.txt" --prune-empty
git push origin -f

で上記をやる前は

100644 blob 9128c3eb56a3547e2cca631042366bf0f37abe67    fuga.txt
100644 blob 2262de0c121f22df8e78f5a37d6e114fd322c0b0    hoge.txt

っていう風に出るけど実行した後では

100644 blob 9128c3eb56a3547e2cca631042366bf0f37abe67    fuga.txt

っていう風になる模様。

やたらとこういうの(要らんファイルをうpする)をやっちゃうので覚えておこう

oauth-signpost(Android)でGoogle App Engine(+OAuth) Android4.3 NotificationListenerServiceを使ってみる