.gitignoreとは
Gitの管理対象から除外するファイルやディレクトリを指定するファイル
.gitignoreでファイルまたはディレクトリを指定する方法
.gitignoreでGitの管理対象外とするファイルまたはディレクトリを指定する場合、.gitignoreからの相対パスで指定する。
以降の説明をするにあたって、以下のようなディレクトリ構成があったとする。
sample_directory
├ directory
│ ├ file1.txt
│ └ file2.txt
├ directory2
│ ├ directory
│ │ └ file1.txt
│ └ file2.txt
└ file1.txt
コメントアウト
#から始まる行はコメントになる。
# コメント
特定のファイル・ディレクトリをGitの管理対象から除外する
末尾以外に「/」を含めて指定した場合、パスで指定したファイルまたはディレクトリのみをGitの管理対象外とする。
# 特定のファイルを管理対象外とする
/directory/file1.txt
# 特定のディレクトリを管理対象外とする
/directory
先頭の「/」は.gitignoreファイルと同じ階層のファイルまたはディレクトリを指す。
同一のファイル・ディレクトリを全てGitの管理対象から除外する
「/」を含めずに指定または、末尾にのみ「/」を含めて指定(ディレクトリのみ)した場合、.gitignore以下の全サブディレクトリ下にある同名のファイルまたはディレクトリをGitの管理対象外とする。
# 同名のファイルを全て管理対象外とする
file1.txt
# 同名のディレクトリを全て管理対象外とする
directory
# または
directory/
ワイルドカード
任意のパターンに一致するファイル・ディレクトリを指定する。
# 「/」を除く全ての文字にマッチする
# 全てを管理対象外とする
*
# 特定のディレクトリ以下を全て管理対象外とする
/directory/*
# 特定の拡張子のファイルを全て管理対象外とする
*.txt
除外対象から外す(管理対象に含める)
除外対象に含まれているファイル・ディレクトリをGitの管理対象に再び含める。
# .gitignoreファイルと同階層にあるfile1.txtのみ管理対象とする
*
!/file1.txt
ただし、ディレクトリを除外したあとにディレクトリ内の一部のファイルに対して「!」を使用してもGitの管理対象に含めることはできない。
除外したディレクトリから一部のファイルのみGitの管理対象に含めたい場合、以下のようにディレクトリを除外せずにディレクトリ内部のファイル全てを除外した後、一部ファイルに対して「!」を使って管理対象に含める。
# ディレクトリ自体を管理対象外としたあとでは、ディレクトリ内のファイルを管理対象に戻せない。
# /directory/
# !/directory/file1.txt
# ディレクトリ内部のファイルを全て管理対象外とした後に特定のファイルを管理対象に戻す。
/directory/*
/directory/file1.txt
参考資料
Markdown: gitignore - Specifies intentionally untracked files to ignore
Markdown: 【IT用語】.gitignoreの書き方を図解形式で理解しよう!