# #文字は行末までコメント # 空行や末尾の空白文字も無視される。 # ルート(GITの管理フォルダ)の直下のconfig.ini を無視する。 /config.ini # /が含まれていないときは、ルート直下でもサブフォルダでも、 # どこにあっても、ファイル名に基づいて判定する。 foo.txt # 例えばこの場合、どのディレクトリでも、foo.txt という名前のファイルを無視する。 # *は任意の文字列になる。拡張子htmlのファイルをすべて無視する例。 *.html # この場合、/が含まれていないので、ルート直下でもサブフォルダでも、 # どこにあっても拡張子htmlのファイルがすべて無視される。 # !文字は否定になる。上記設定により*.htmlは無視するけど、index.html は無視しない例。 !index.html # ディレクトリを無視する場合。 src/
# ファイル名に#文字や!文字などが含まれているときは \(バックスラッシュないし円記号)でエスケープする。 \#contents\# # []内に文字を並べると、どれかの文字とマッチする。 *.[ch] # *.c 又は *.h にマッチする。[0-9]のように文字の範囲指定もできる。 # 複数のパターンにマッチするときは、最後にマッチしたものが優先される。 src/ !/src/hello.c # src/ で無視する設定になっているが、後から指定した /src/hello.c が優先する。 # *文字は任意のファイル名にマッチするが/にはマッチしない。 /include/*.h # 上の例は /include/time.h にマッチするが、 /include/sys/time.h にはマッチしない。 # *文字はディレクトリ名にもマッチする。 /include/*/*.h # 上の例は /include/sys/time.h にマッチする。 # **は特別な意味がある。複数段のディレクトリ階層にマッチする。 /include/**/*.h # 上の例は /include/time.h, /include/sys/time.h, /include/local/sys/time.h のすべてにマッチする。 # **はファイルもマッチする。 /include/** # 上の例は /include 配下のすべてのファイル/ディレクトリにマッチする。(この場合は /include/と同じ)
/* !/index.html !/src/最初の /* により、いったんすべて無視するように指定している。
/* !/index.html !/src/hello.cこの例では、/* により先ずいったん、すべてを無視するよう指定して、
/* !/src/ !/src/hello.cただしこれだと、/src/foo.c というファイルがあればこれも管理対象となる。
/* !/src/ /src/* !/src/hello.cこれが正解。