Management of empty directory for Git
Gitで空ディレクトリを管理する方法をまとめる。
プロジェクトのディレクトリ構造を維持したり,一時ファイルの管理のために空ディレクトリをGitでも管理したいことがある。しかし,Gitではファイルのみが管理対象となるため空ディレクトリを管理できない。そのため,空ディレクトリの管理には何らかのファイルを配置して行う。
配置するファイル内容により,空ディレクトリの管理方法には以下の2通りがある。
- 空ファイルの追加
- .gitignoreで指定
空ファイルの追加
管理したい空ディレクトリに空ファイルを追加して,トップディレクトリの.gitignoreでからファイル以外を無視する。空ファイルの名前はなんでもよく,とくに決まっていない。慣例として以下のどれかが使われているようだ。
- .gitkeep
- .gitignore
- empty
.gitkeepというファイル名がRails関係などでよく使われているらしい。.gitignoreだと本来の.gitignoreと役割を勘違いする可能性があるらしい。emptyだとわかりやすい。
例:
mkdir tmp
touch tmp/empty
git add tmp/empty
- 利点
- 無視ディレクトリだとわかりやすい。
- 欠点
- 空ディレクトリにファイルが追加される場合,上位の.gitignoreで追加されたファイルを無視する必要がある。
例えば,以下のような.gitignoreを配置する必要がある。
tmp/*
!empty
.gitignoreで指定
空ディレクトリに以下の内容の.gitignoreを追加する。
*
!.gitignore
- 利点
- 上位の.gitignoreを気にしなくてよく,シンプル。
- 欠点
- 無視ディレクトリだと気づかれにくい。
まとめ
空ディレクトリの用途に合わせて,以下のように使い分けるといいようだ。
- 空ファイルの追加:ソースコードなど,後から管理するファイルを追加する可能性があるとき
- .gitignoreで指定:管理したくないキャッシュやログなどの一時ファイルを保持するとき
この記事は以下の記事の内容を自分用に整理したものとなっている。
参考:
Gitで空フォルダを管理したいときemptyを使うか.gitignoreを使うか – なんたらノート第三期ベータ http://tanakahisateru.hatenablog.jp/entry/20120120/1327044729