.gitignoreのメモ
.gitignoreはgitに管理させないファイルを記述するファイルです。
影響範囲
.gitignoreを置いたディレクトリ以下にしか影響を及ばさない。.gitignore内で書くパスもここからの相対パス
特定のファイルを無視する
/tmp/file
先頭に/をつけて書く(最後には/をつけない)
特定のディレクトリを無視する
/tmp/directory/
先頭と最後に/をつけて書く
特定の拡張子のファイルを無視する
*.o
拡張子oのファイル全て無視する
特定の名前のディレクトリを全て無視する
directory/
directoryという名前のディレクトリを全て無視する(最後にだけ/をつける)
特定の名前のファイルを全て無視する
hoge.txt
hoge.txtという名前のファイルを全て無視する(/をつけない)
特定のディレクトリ以下にある特定のディレクトリ名を全て無視する
/main/**/directory/
この場合は、mainディレクトリ以下にあるdirectoryというディレクトリ名のディレクトリを全て無視します
例)
/main/a/directory
/main/b/bb/directory
無視しない
*.txtを全て無視するけど、/hoge/fuga.txtだけはgitに追加したい場合は先頭に!をつける
*.txt
!/hoge/fuga.txt
という風に書く。
よくあるハマりポイントとしては、/hogeディレクトリを無視したいが/hoge/fuga.txtは追加したい場合に
/hoge/
!/hoge/fuga.txt
としてもfuga.txtが追加されないというパターン。fuga.txtを無視から除外しているけど、親ディレクトリの/hoge/が無視されているので追加されない。この場合は
/hoge/*
!/hoge/fuga.txt
とすると良いです。親ディレクトリが無視されていると!で無視から除外してもダメなのです。
ディレクトリ保持用のファイル(.gitkeep)
.gitignoreの書き方では無いですが、gitはファイルが空のディレクトリは管理してくれないので、ディレクトリ構造をgitに管理させたい時は便宜上何かファイルを置かなければいけません。その場合.gitkeepという空ファイルを置くのが通例です。
ディレクトリ構造のみ管理したい
指定ディレクトリ以下のファイルはgitで管理したくないが、ディレクトリ構造は管理したい場合、保持したいディレクトリに.gitkeepファイルを置いて、.gitignoreに
/storage/**
!/storage/**/
!/storage/**/.gitkeep
と記載すれば、この場合storage以下のディレクトリ構成のみ(.gitkeepと)をgitに追加できます。↓で詳細が記載されています。スマートな記述方法を探していたので感謝🙏
参考:
.gitignore記法の詳細は下記サイトが大変参考になります。
Discussion