Gitで実ファイルは残したままコミット履歴だけ消したい

コミット履歴は削除して、ワークツリーにある実ファイルを残したい場合ありますよね。
例えば、IDEを使っていてプロジェクトと関係ないIDE固有のファイルもGitにCommitして、後になって.gitignoreにそれらのファイルを定義した時。
Gitで管理したくはないけど、ファイルを削除するのは困りますね。
その時にはこれを使いましょう。

git rm --cached --force /path/to/file

こうすると/path/to/fileに書いたファイルは残ったままGitの履歴からは無くなります。
つまり、対象のファイルは今後Gitの管理対象からは外れます。
重要だからもう一度言いますが、これは今後の履歴から該当ファイルを外すもので、もし以前のHistoryからも削除したい場合はもっとややこしいです。
例えば、ID・PWを含んだファイルをCommitしてしまって、それをHistoryも含めて全部削除したい場合。
場合によってはGithubに連絡して削除して貰うことになるかも知れません。
これについては他のポストで書きます。(書く気になったら。。。)
もし、急ぎの場合はこの公式文書を参照してみてください。
Warning: Once you have pushed a commit to GitHub, you should consider any data it contains to be compromised.

Git, Github

Posted by YongJin Kim