#◆ 対象
.gitignoreで、ホワイトリスト型にするのはよく見かけますが、
特定のフォルダの中身全てを許可したい人向けになります。
複数人で利用するときに、担当者ごとに特定のフォルダ内のみ追加変更を許可する。
などしたいときに利用できます。
#◆ 書き方
ホワイトリスト型にするには、まず全てをブラックリストとして禁止して
必要なファイルやフォルダを許可(!をつける)する順番で書きます。
# 【1】 最初に全ファイル禁止
# すべてのファイルをignoreするがフォルダはしない
# gitは空フォルダは無視されるので影響はない
*
!*/
# 【2】 次に任意のファイルやフォルダを許可
# このファイルと同階層のフォルダ階層以降を許可
!/lib/**
# このファイルと同階層以降の「???_m」というフォルダ階層以降を許可
!**/*_m/**
# このファイルと同階層のファイルだけ許可
!/README.md
!/.gitignore
# 【3】 最後に常に除外するファイルやフォルダを禁止
# OSが自動で作るファイル
.DS_Store
Thumbs.db
#◆ 解説
フォルダに関する定義
記号 | 意味 |
---|---|
先頭に / | このファイルと同階層のみ |
先頭に */ | このファイルと同階層よりも下(同階層を含まない) |
先頭に **/ | このファイルと同階層以降(同階層を含む) |
末尾に / | 指定のフォルダのみ(意味がない) |
末尾に /* | 指定のフォルダ直下のファイルのみ |
末尾に /** | 指定のフォルダ以降全てのファイルとフォルダ |
上記を踏まえて、
!**/*_m/**
の意味は、
「**/
」 このファイル(.gitignore)を記述した階層を含む以降の階層に対して
「*_m/
」 末尾が 「_m」 で終わるフォルダがあったら
「/**
」 このフォルダ以降のファイルとフォルダを全てを
「!
」 許可する
となります。
#◆ 参考
GitHubが公式で出している、プロジェクト毎のテンプレート
https://github.com/github/gitignore
この中身を見た方が勉強になるかもしれません。
一部抜粋
Android
C++
Dart
Go
JENKINS_HOME
JAVA
Kotlin
Laravel
Lua
Node
Objective-C
Peal
Processing
Python
Rails
Ruby
Sass
Swift
Symfony
Unity
VisualStudio
WordPress
などなど