本記事では、.gitignoreの書き方について、パターンごとに詳しく説明していく。
.gitignoreは知らないと以外に癖のある書き方なので、.gitignoreの書き方を知らない人はこれを機にしっかりと.gitignoreの書き方をマスターしてもらいたい。
.gitignoreとは
.gitignoreとは、簡単に言うと
gitの管理対象外にしたいファイルを指定するためのファイルだ。
.gitignoreと言う名前のテキストファイルに、gitのバージョン管理から対象外としたいファイル or ディレクトリを、指定の書式で書き込んでいくことでgitの管理対象外とすることができる。
.gitignoreは、基本的に以下のような性質を持っている。
- .gitignoreは複数のディレクトリに配置することができる。
- より深い階層に配置された.gitignoreに書かれた内容の方が、優先順位が高い(効力が強い)。
では、.gitignoreの書き方について詳しく説明していく。
空行 or #で始まる行
空行 or #で始まる行は、解釈されない(無視される)。
# (無視される行)
(無視される行)
#はコメントなどに使用する。
名前のみ指定
名前のみ指定した場合、
.gitignore以下の全サブディレクトリ下にあるファイル or ディレクトリを無視。
#全サブディレクトリ以下にあるfile.txtを無視
file.txt
全サブディレクトリ以下が対象であることに注意。
よく、カレントディレクトリのみ対象であると勘違いする。
名前の末尾に/を付けて指定
名前の末尾に/を付けて指定した場合、
.gitignore以下の全サブディレクトリ下にあるディレクトリを無視
#全サブディレクトリ以下にあるdirAdディレクトリを無視
dirA/
同じく全サブディレクトリ以下が対象であることに注意
パスを指定(末尾の/は除く)
パスを指定(末尾の/は除く)した場合、
.gitignoreが置いてあるディレクトリからの相対パスで指定されるファイル or ディレクトリを無視
#.gitignoreが配置されているディレクトリから見て、project/project.txtを無視
project/project.txt
パスを指定した場合は、指定のパスのみに対象が絞られる。
なお、パスの先頭に/を付けた場合も、gitignoreが置いてあるディレクトリからの相対パスで指定される点になるので、先頭の/は付けても付けなくても構わない。
パスを指定(末尾に/を付ける)
パスを指定(末尾に/を付ける)した場合、
.gitignoreが置いてあるディレクトリからの相対パスで指定されるディレクトリを無視
#.gitignoreが配置されているディレクトリから見て、project/contentDirディレクトリを無視
project/contentsDir/
ファイルの時と同様、パスを指定した場合は、指定のパスのみに対象が絞られる。
!を先頭に付ける
!を先頭に付けた場合、
!以降のパターンが示すファイル or ディレクトリを無視しない
#.gitignoreが配置されているディレクトリから見て、project/project.txtを無視「しない」
!project/project.txt
以前の無視指定を無効化すると言う効果も持つ。
.gitignoreの、ワイルドカードの使い方
.gitignoreでは、ワイルドカードを使用して、特定のパターンに合致するファイルをまとめて無視することができる。
よくあるワイルドカードの使い方として、「.png」という拡張子のファイルをまとめて指定したい場合「*.png」のように記述できる。
*
/以外の、0文字以上の文字列にマッチ
#全サブディレクトリ以下にある.png拡張子ファイルを無視
*.png
?
/以外の、1文字にマッチ。
ワイルドカードではおなじみなので、割愛。
[0-9]
/以外の、指定した1文字の数字にマッチ。
ワイルドカードではおなじみなので、割愛。
**
0個以上のファイル or ディレクトリにマッチ。
#「/a」 「/a/x」 「/a/x/y」 などにマッチ
/a/**
#「/b」 「/x/b」 「/x/y/b」 などにマッチ
/**/b
#「/a/b」 「/a/x/b」 「/a/x/y/b」 などにマッチ
/a/**/b
「**」は、.gitignore特有の書き方なのでしっかり覚えておこう。
ファイル名に*を指定するパターンの、ディレクトリ版と考えれば覚えやすい。
Gitの基本的な使い方
別記事にて、gitの基本的な使い方をまとめた記事を用意してあるので、
もし良ければチートシート的に使用していただきたい。
参考URL
- [Git] .gitignoreの仕様詳解(https://qiita.com/anqooqie/items/110957797b3d5280c44f)