何が起きたか
Gitは空のディレクトリを追跡しないため、空フォルダをリポジトリに残したい場合に .gitkeep を置くという慣習がある。主ソースは、logs、uploads、config の各ディレクトリに .gitkeep を置く例を示し、ディレクトリ構成を保つ用途を挙げている。
詳細
主ソースによると、.gitkeep は空ディレクトリを追跡させるための convention-based placeholder file であり、Gitの機能そのものではなく命名慣行にすぎない。本文では、logs/.gitkeep を追加して git add logs/.gitkeep、git commit -m "Add logs directory" とするとディレクトリがリポジトリに含まれる一方、空の logs ディレクトリをそのまま git add logs/ しても反映されないとしている。また、用途としては logs、uploads、cache のような将来ファイルを置く場所や、config のような設定用ディレクトリが挙げられている。
Key Facts
| .gitkeepは、Gitが空のディレクトリを追跡しない制約を補うための慣習的なプレースホルダーファイルである。 | [1] |
| .gitkeep は Git の正式機能ではなく、単なる命名慣行である。 | [1] |
| 空の logs ディレクトリに対して git add logs/ をしても、ディレクトリはコミットされない。 | [1] |
| logs/.gitkeep を作成して git add logs/.gitkeep、git commit -m "Add logs directory" を行うと、そのディレクトリは追跡される。 | [1] |
| 主ソースは、logs、uploads、config の各ディレクトリに .gitkeep を置く例を示している。 | [1] |
本紙の見方
今回の主題は、Gitの仕様上の制約と、それを運用で埋める .gitkeep の関係である。新しいのは、空ディレクトリを残す手段として .gitkeep という慣行が明示されている点であり、既定路線の延長としては、実体のないフォルダ構成をどう管理するかというリポジトリ運用の問題にとどまる。 本紙の関連記事はないため、過去報道との接続はない。公開情報として読めるのは、.gitkeep が Git の機能ではなく、必要なフォルダを先に置いておくための運用上の工夫だという点である。logs、uploads、config のように、後からファイルが入る前提のディレクトリをあらかじめ残したい場面では、この方法が構成管理の最小単位になるとみられる。 業界構造への含意としては、ソース管理の対象がコードだけでなく、ディレクトリ構造や設定置き場まで含むことが前提になっている点が重要である。Gitが空ディレクトリを保持しない以上、生成物やログ、アップロード領域、設定用の空フォルダをどう扱うかが実務上の論点になる。もっとも、.gitkeep はあくまで慣習であり、.gitignore で同様の目的を代替する例もあるため、どの方式を採るかはチームの運用設計に委ねられる。 未確定の論点は、.gitkeep と .gitignore のどちらを標準とするか、また空ディレクトリを残す必要がある範囲をどこまで厳密に定義するかである。ソースは用途例を示しているが、プロジェクトごとの運用ルールまでは踏み込んでいない。
なぜ重要か
Gitで空ディレクトリをそのまま管理できないため、logs や uploads のような置き場を事前に残したい開発現場では、.gitkeep のような慣行が必要になる。主ソースが示す通り、これは正式機能ではなく運用上の工夫であり、導入するかどうかはチームの管理方針に依存する。
日本への影響
日本の開発現場でも、ログ保存先やアップロード先、設定用ディレクトリをリポジトリ上でどう表現するかが実務上の論点になる。ソースが示すように .gitkeep は正式機能ではないため、運用ルールをそろえないと、空ディレクトリの扱いがチーム内でぶれる可能性がある。