.gitignoreで特定のディレクトリ・ファイルのみ管理したい場合の設定方法

Git管理をしていると、.gitignoreファイルで「特定のディレクトリのみ」や「特定のファイルのみ」をバージョン管理対象とし、それ以外は除外したいケースが出てきます。
また、フォルダごと無視したい場合や、なぜか指定が反映されない場合もあるでしょう。
ここでは、その基本設定と注意点を整理しておきます。

前提のディレクトリ構成例

例えば、以下のような構成を想定します。

└── public
├── css (サブディレクトリ複数あり)
├── img (サブディレクトリ複数あり)
├── index.html

ここで、publicフォルダ配下は基本的にGit管理対象外とし、cssディレクトリのみバージョン管理したいとしましょう。

.gitignore設定例

public/.gitignore を作成して、下記のように記述します。

/*
!/css

設定の意味

  • /*public内の全てを無視する
  • !/csscssフォルダのみ無視対象から除外する(=管理対象とする)

このように、まずは全てを無視しておいて、特定のディレクトリ(ここではcss)のみを例外的に追跡対象とします。

「/」の付け忘れに注意

/* と書くことで public直下全てを対象にできます。*だけだと、期待通りに反映されないことがあるので、ルート相対パスを意識して/を付けるようにしましょう。
.gitignoreでは記述するファイル・フォルダがどの階層にあるかに注意が必要です。

特定のファイルのみ管理したい場合

「gitignore 特定のファイルのみ」を管理下に置きたい場合も同様のアプローチが可能です。
例えば、public配下全てを無視しつつ、index.htmlだけは管理対象としたいとします。
その場合は以下のようになります。

/*
!/index.html

このように、特定のファイルのみを例外として指定できます。

フォルダごと無視、または特定のフォルダごと管理したい場合

フォルダごと管理から外したい場合は、/フォルダ名/のように指定します。
逆に、他を無視してそのフォルダごと管理したい場合は、上記の除外指定 (!) と組み合わせます。

/*
!/フォルダ名

上記は特定のフォルダのみを管理対象にする基本形です。

反映されない場合のチェックポイント

.gitignoreの設定がうまく「反映されない」という場合は、以下を確認してみてください。

  1. キャッシュのクリア:既にGit管理下にあったファイルは、.gitignoreを後から変更しても反映されないことがあります。
    • git rm -r --cached . コマンドでキャッシュをクリアして再度確認します。
  2. 相対パス・絶対パスの確認/の付け忘れや、.gitignoreファイルの置き場所が正しいかを再度見直します。
  3. 複数の.gitignore:リポジトリ直下の.gitignoreとサブディレクトリ内の.gitignoreの優先順位が影響する場合があります。
    どの階層で設定すべきか整理してから記述してください。

以上が、.gitignoreで「特定のディレクトリのみ」や「特定のファイルのみ」を管理対象にする方法、フォルダごとの設定、そして反映されない場合の対処法です。
こうした設定パターンを覚えておくことで、プロジェクトごとに柔軟なGit管理が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
目次