LoginSignup
12
7

More than 3 years have passed since last update.

.gitignoreでフォルダに対してホワイトリストで管理する方法。特定階層以降を許可

Posted at

◆ 対象

.gitignoreで、ホワイトリスト型にするのはよく見かけますが、
特定のフォルダの中身全てを許可したい人向けになります。

複数人で利用するときに、担当者ごとに特定のフォルダ内のみ追加変更を許可する。
などしたいときに利用できます。

◆ 書き方

ホワイトリスト型にするには、まず全てをブラックリストとして禁止して
必要なファイルやフォルダを許可(!をつける)する順番で書きます。

.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

などなど

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7