gitで管理しないファイルを無視させる .gitignore
.gitignore とは名前からも分かるように git で無視するファイルを指定するファイルです。 .gitignore は通常トップディレクトリに置きますが git ではディレクトリのみを管理しないためルートディレクトリ下のサブディレクトリなどにも置く事が可能です。
.gitignoreで指定できる書式
- ハッシュ記号で始まる行はコメントとして扱われる
- 空行は無視される
- ! マークで始まる行は残りのパターンを否定します
- スラッシュ/で終わる場合はディレクトリのみを表す
- スラッシュ/で始まる場合はルートディレクトリからを表す
- どこにもスラッシュ/が無い場合はシェルのglobパターンとしてファイル名のベース部分にマッチするか検査される
- 複数マッチするパターンがある場合は最後にマッチするものが優先される
設定できる.gitignoreパターン色々
*~
ファイル名の最後に ~ がある全てのファイル 例) index.html~ 等
*.[ao]
拡張子が a 又は o のファイル 例) hello.a foo.o
t/
t ディレクトリは全て無視されます
v
ファイル名が v の場合無視されるが v がディレクトリ名の場合は無視されません
!*.t
拡張子 t を持つファイルは無視されません
.gitignoreで指定する前にgit addしてしまった場合
.gitignore ファイルを作成する前に git add . 等の一括登録のコマンドをうっかり使ってしまい追加したくないファイルまでaddしてしまった場合の対処方法
$ git rm -f foo.html~
※管理対象から削除され同時にファイルも削除される
$ git rm --cached -f foo.html~
※管理対象(インデックス)から削除するだけでファイルはそのままです
.gitignore を無視する!?
おかしな話ですが無視したいから設定した .gitignore を無視する(なんのこっちゃ)掟破りの方法が存在します。 .gitignore に *.o と設定すると拡張子 .o のファイルは漏れなく無視されるはずですが -f オプションでさらに無視しちゃいます。
$ git add -f foo.o
関連
created: