1. ホーム
  2. git

[解決済み] Git はサブディレクトリ内の特定のファイルを無視するが、すべてを無視しない

2023-06-04 20:32:20

質問

以下のような構造になっています。

/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php

gitに無視させたい 任意の .json のファイルは '/data/...' パスの下にありますが、 '/data/' はサブディレクトリを含むことがあります。

私の理解では、単純な data/*.json は一つのディレクトリにしかマッチしないということです。 * にはマッチしないので / に記載されているように http://git-scm.com/docs/gitignore の箇条書き6に記載されています。

そうでない場合、git はパターンを FNM_PATHNAME フラグを指定した fnmatch(3) で使用するのに適したシェルグロブとして扱います:パターン内のワイルドカードはパス名の / にはマッチしません。例えば、 "Documentation/*.html" は "Documentation/git.html" にマッチしますが、 "Documentation/ppc/ppc.html" や "tools/perf/Documentation/perf.html" にはマッチしないのです。

これを行う簡単な方法はありますか、それとも積極的に各サブディレクトリに gitignore ファイルを明示的に追加する必要がありますか。

どのように解決するのですか?

この問題については、最近、記事を書きました。参照 をご覧ください。 .

基本的に、あなたが必要とするのは、1つの .gitignore*.json の中に /data/ ディレクトリの中にあります。

UPD : gitから 1.8.4 ( 1.8.2 のような二重星型パターンを使用することができます。 /data/**/*.json