$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch targetfile' HEAD これで、特定のファイルtargetfileの履歴を消去できる。 特定のディレクトリは $ git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch dir' HEAD で特定のディレクトリdirが消える。-rオプションを忘れずに。 後は、コミットするだけ。 $ git commit -m 'delete targetfile' リモートのリポジトリにもこの変更を反映させなければならない。 そういう場合は $ git push origin master --force でプッシュ。--forceを付けたのはリモートを強制的に上書きするため。