.gitignore を設置
GitHub に .gitignore のテンプレートがあるのでそれを使うとらくです。
.gitignore をコミット
チームで開発していたり、複数のマシンで編集する可能性がある場合は、他の環境でも同様にこれらのファイルを無視してくれるように、.gitignore 自体をコミットしてしまいましょう。
$ git add .gitignore
$ git commit -m "Add ignore pattern"
無視したいファイルをリポジトリから削除
.gitignore を設置しても、既にリポジトリに登録されているファイルは無視されないので、無視したいファイルを管理対象から外します。
$ git rm --cached hoge.tmp
(なお、管理対象から外れるだけで、ローカルにあるファイルは削除されません)
ただ、既に大量のファイルが登録されている場合、これをひとつひとつやっていたら大変なので、以下のように git ls-files の -i と --exclude-from オプションを使って、まとめて除外するとらくです。
$ git rm --cached `git ls-files --full-name -i --exclude-from=.gitignore`
-
-iは--ignoredの略で、Git に登録されているファイルの内、次に指定する方法で無視するファイルの一覧を出力します。 -
--exclude-from=<ignore-file>を指定すると、<ignore-file>に記述されたパターンにマッチするファイルを、無視するファイルとして扱います。 -
--exclude-standardを指定すると、Git が標準で無視リストとして扱う.gitignoreや.git/info/excludeなどのファイルに書かれたパターンにマッチするファイルを、無視するファイルとして扱います。
--exclude-standard を使う場合は、以下のように入力します。
$ git rm --cached `git ls-files --full-name -i --exclude-standard`
最後に、確認して問題なければコミットしましょう。
$ git status
$ git commit -m "Remove ignore files"
追記
- 2014/07/07 まとめて除外するコマンドを修正しました。
- 2014/10/10 説明をわかりやすくなるように編集しました。