🐥

.gitignoreのメモ

2023/10/27に公開

.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に追加できます。↓で詳細が記載されています。スマートな記述方法を探していたので感謝🙏
https://qiita.com/silane1001/items/ba37ecfec218634a9d94

参考:
.gitignore記法の詳細は下記サイトが大変参考になります。
https://qiita.com/anqooqie/items/110957797b3d5280c44f
https://git-scm.com/docs/gitignore

Discussion